pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Как получать стабильный результат из Яндекс.Директа?

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

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

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

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

Лучший ответ: 1) Храните несколько разных хешей, есть другие алгоритмы помимо md5
2) Перед md5 сравнивайте еще и просто размер
3) Если уж ВСЕ совпало - для полного исключения - сравните побайтово

Худший ответ: Можно просто заменить алгоритм хэширования на BLAKE2b.
Вопрос: КАК пустить исходящий трафик smtp через определенный ip?

Лучший ответ: /ip firewall nat
add action=src-nat chain=srcnat dst-port=25 out-interface=ether1 protocol=tcp src-address=172.16.0.200 to-addresses=10.0.0.28
это правило NAT должно быть выше правила masquerade. значение dst-port= поменяйте на ваше

Худший ответ: Типа так:ip firewall nat add chain=srcnat action=src-nat protocol=tcp src-address-list=<your_ips> dst-port=25,587,465 to-addresses=10.0.0.28
За прононс не отвечаю, но суть такова, что NAT будет преобразовывать запросы с нужных IP на порты SMTP, приводя их IP к заданному виду.
Вопрос: Что нужно для SEO в 2020 году?

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

Хорошо, раз вопрос задан, внесу свои 5 копеек.
Вы выучили базовые принципы продвижения и без них даже не имеет смысла заниматься продвижением сайта. Кто говорит обратное, застрял в 2009 году, когда для достижения заветного ТОПа достаточно было увеличивать бюджеты на ссылочное. Сейчас тоже такие ребята есть и работают они на этот раз с "подливами" и накруткой ПФ. Всегда найдутся те, кто хочет быстрее срубить бабла на Заказчике..

"База" перечисленных вами работ/навыков была и остается, плюс к ней добавляется работа с Яндекс справочником и Google Бизнес, например, которые не относятся напрямую к SEO, но влияют на успешное продвижение в регионах.

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

Худший ответ: да  это элементарная база , что значит половина ее не нужна ))) это типо вас нае*али получается . Спросите того кто вам это сказал зачем он вас так сильно обманывает и почему считает вас за чудака.
Вопрос: MacBook Pro 13 Core i5 2017 с 16GB ОЗУ и 128GB SSD, идеальная рабочая машина для Android разработчика?

Лучший ответ: Идеальная рабочая машина для перечисленного это обычный ПК а не ноутбук. Кроме того экран в 13 дюймов это будет боль и страдание. Ну и кроме того макось очень любит жрать оперативку кэшируя туда все что можно и нельзя, к примеру просто кэш файлов может влегкую отожрать гигабайт 6-8 от оперативки. В довесок у всех макбуков есть проблемы с охлаждением.
В общем как и писал, лучше взять хороший добротный ПК, на крайний случай хороший ноутбук в который воткнуть ссд и hdd вместо двд привода а сверху насыпать 32гб оперативки.

Худший ответ: ОЗУ мало, 13" для кодинга - ппц как мало.
Вопрос: Смотрят ли на оценки в дипломе при устройстве на работу?

Лучший ответ: У меня даже диплом не спрашивали ни разу, 4 места работы сменил. А уж вкладышь  тем более ))

Худший ответ: Точно реже, чем на сам диплом. А на диплом никто, кроме отдела кадров не смотрит.
Вопрос: Работает код на чистом js быстрее чем jquery?

Лучший ответ: Вопрос сам по себе глупый. Jquery - это и есть js. По сути, это набор функций, упрощающий разработку и сокращающий код. То что будет быстрее зависит от твоего ур-я. jq писали не глупые люди, сможешь ли ты написать лучше? Не думаю. Другое дело, что функции в jq более универсальны, для этого приходится жертвовать скоростью, но разница в скорости выполнения скрипта будет в пару десятков миллисекунд, а вот что касается скорости загрузки, ты можешь сократить код с jquery на 20-30% минимум.

Худший ответ: jQuery написан на всё том же чистом JavaScript, но добавляет тяжёлый довесок для удобства.
Можно написать реализацию вашего алгоритма с использованием и без использования jQuery и сравнить на миллионе прогонов на сайте jsPerf – и другие смогут повторить ваши тесты на их компьютерах/браузерах, ведь от этого тоже многое зависит.
Вопрос: Как совместить фото с музыкой?

Лучший ответ: Можно написать обёртку для ffmpeg.

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

Лучший ответ: Можно. SANE это позволяет.

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

Лучший ответ: Элементы форм не могут быть внутри ссылки. HTML 5.2 Specification
4.5.1. The a element
Content model:
    Transparent, but there must be no interactive content or a element descendants.

Interactive content is content that is specifically intended for user interaction.
a (if the href attribute is present), audio (if the controls attribute is present), button, details embed, iframe, img (if the usemap attribute is present), input (if the type attribute is not in the Hidden state), label, select, textarea, video (if the controls attribute is present).
The tabindex attribute can also make any element into interactive content.

Худший ответ: Циклом пробежитесь и тогда добавите кнопку к каждой ссылке.
const links = document.querySelectorAll('.navigation__link');

links.forEach(link => {
  const btn = document.createElement('button');
  btn.textContent = "BUTTON";

  link.appendChild(btn);
});
А что у вас там ошибка была в консоле показывает.
Вопрос: Есть ли CSS-only способ для такой задачи?

Лучший ответ: вы реально полагаете, что по скринам можно понять как оно всплывает?
ну ок: можно и на чистом CSS показывать блок по hover'у.

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

Лучший ответ: Очереди ваше все. RabbitMQ, например

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

Лучший ответ: Судя по описанию проблемы дело не в SSD а в оперативной памяти или в кривом софте.

Худший ответ: Можно ещё посмотреть через resource monitor - он показывает и диск
Вопрос: Почему в классе es6 получаю ошибку this.method is not a function?

Лучший ответ: у вас в методе валидации попытка использовать два контекста.
один указывает на input - this.value , другой на клас -  this.validatePhone, так не пойдет)
измените код чтобы this указывал на класс
formValidate(e) {
        const el = e.target; // элемент на котором произошло событие 
        const { value, name} = el; // значение и имя элемента 
        switch(name){
            case ‘phone’:  ... this.validatePhone(value) ...
        ...
        }
}
при вызове для сохранения контекста на класс, используйте стрелочную функцию 
form.elements[i].addEventListener('blur', e=> validation.formValidate(e));

Худший ответ: у вас в методе валидации попытка использовать два контекста.
один указывает на input - this.value , другой на клас -  this.validatePhone, так не пойдет)
измените код чтобы this указывал на класс
formValidate(e) {
        const el = e.target; // элемент на котором произошло событие 
        const { value, name} = el; // значение и имя элемента 
        switch(name){
            case ‘phone’:  ... this.validatePhone(value) ...
        ...
        }
}
при вызове для сохранения контекста на класс, используйте стрелочную функцию 
form.elements[i].addEventListener('blur', e=> validation.formValidate(e));
Вопрос: Донатерский и суперадминский доступ к консоли сервера?

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

Худший ответ: https://ru.wikipedia.org/wiki/Chroot

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

Лучший ответ: Была такая же ситуация, что просто в один момент перестал работать Elementor. Убил на решение проблемы пару часов. Отключал все плагины, переустановил Elementor, почистил кэш, проверил права, но проблема так и не решалась.
В один момент замечаю, что на главной странице сайта не отображается админ панель Wordpress, хотя  я и работаю в админке уже несколько часов. И я понимаю, что что-то с правами входа. Просто вышел из админки через выход, назад зашел и все начало работать. Скорее было что-то более глобальное с кэшом во всем браузере, а не с сайтом.

Худший ответ: Причины могут быть разные...
Пару раз сталкивался с elementor. Вообще не сильно люблю визуальные редакторы, но иногда использую Visual Composer. 
Что касается причин ошибки:
1) конфликт плагинов (вы исключили)
2) конфликт самой темы
3) было обновление компонентов (ВП, плагинов или темы) и возможно, привело к ошибке. Попробуйте обновить сам плагин Elementor.
4) Проверьте chmod 755 папки, 644 файлы.
5) Проверьте лимиты хостинга (может быть inodes достигнут или еще что...)
6) Попробуйте заменить урлы с локального на рабочий через better search replace. не забудьте про колонку guid
7) обновите htaccess
8) проверьте права пользователя на директорию с ВП. (может быть пользователь апач и пользователь директории с ВП отличаются)
9) Включите дебаг в wp-config и проверьте код
10) Проверьте настройки фаервола. Например, плагин Wordfence умеет блокировать от несанкционированных действий и т.д.
А и самое главное - проверьте max memory_limit. Очень частая ошибка, когда плагину просто не хватает памяти. Тем более, что в большистве shared хостингов (за исключением зарубежных) он равен 128 мб, а надо 256 и больше. Можете это даже в первую очередь проверить.
Вопрос: Как написать функцию дешифровки методом Вернама?

Лучший ответ: Так как шифр тов. Вернама - симметричный, дешифровку вы уже написали.

Поясню - в симметричной криптосистеме, для шифрования складывают гамму (в случае ш. Вернама - ключ из блокнота) по модулю, равному мощности алфавита, с шифруемым текстом.

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

Худший ответ: Работающая шифровка и дешифровка методом Вернама
#include<iostream>
#include <conio.h>
using namespace std;
char array[26][26];
char text[22],key[22],encrypted_Text[22],decrypted_Text[22];
int findRow(char);
int findColumn(char);
int findDecRow(char,int);
int main()
{
   int i=0,j,k,r,c;
   k=96;
   for (i=0;i<26;i++)
   {
      k++;
      for (j=0;j<26;j++)
      {
         array[i][j]=k++;
         if(k==123)
             k=97;
      }
   }
   cout << "Enter text to encrypt it :"<<endl;
   cin >> text;
   cout << "Enter key for encryption:"<<endl;
   cin >> key;
   // Encryption
   for (i=0;key[i]!=NULL;i++)
   {
      c=findRow(key[i]);
      r=findColumn(text[i]);
      encrypted_Text[i]=array[r][c];
   }
   encrypted_Text[i]='\0';
   cout << "Encrypted text is :"<<endl;
    cout <<encrypted_Text<<endl;
   //decryption
   for (i=0;key[i]!=NULL;i++)
   {
      c=findColumn(key[i]);
      r=findDecRow(encrypted_Text[i],c);
      decrypted_Text[i]=array[r][0];
   }
   decrypted_Text[i]='\0';
   cout << "Decrypted text is:"<<endl;
     cout << decrypted_Text<<endl;
   getch();
   return(0);
}
int findRow(char c)
{
   int i;
   for (i=0;i<26;i++)
   {
      if(array[0][i]==c)
         return(i);
   }
    return 0;
}
int findColumn(char c)
{
   int i;
   for (i=0;i<26;i++)
   {
      if(array[i][0]==c)
         return(i);
   }
    return 0;
}
int findDecRow(char c,int j)
{
   int i;
   for (i=0;i<26;i++)
   {
      if(array[i][j]==c)
         return(i);
   }
    return 0;
}
Вопрос: Насколько надежна цепочка? Ваши соображения?

Лучший ответ: Ну, ок, выходит вы используете TOR. Факт этого легко палится целевым сайтом, ну либо если добраться до VPN. Таким образом, круг сужается, ведь таких людей не очень много. Ну где-то 500 тыс. в РФ, то есть нехилый такой отсев по всей выборке. Дальше по вашим постам или действиям, или чем вы там будете заниматься, можно сделать следующий отсев. К примеру, вы зашли на хабр и признались, что это ваш второй аккаунт - опа, значит уже не домохозяйка, которая смотрит сериалы. Вы на пересечении множеств пользователей тора и пользователей хабра. Ну и так далее. Безопасность не сводится к цепочке, можно очень легко выдать себя, если не думать головой постоянно.

Худший ответ: Проценты возможных рисков:
1. Регистрация на оф.данные VPS сервисе (деанонимизация: 100%, утечка IP: 100%)
2. Сессия VPN через Tor. (утечка IP: 50-75%, утечка трафика VPN (про Tor - это 100% там и так ясно): 50% - зависит от типа аутентификации и как именно вы заберёте ключи первоначальной аутентификации; если используете "логин-пароль" - сразу 100%)
3. Поведенческий "слепок" (как уже верно заметил dollar) - деанонимизация от 50% и выше (т.е. если сильно нужно - напрягутся и делов-то...).
Думайте дальше сами...
Вопрос: Как правильно выносить данные аналитики в отдельное хранилище?

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

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


Если мы все еще говорим про аналитику то она не должна обращаться к живым данным вообще. Ее складывают в отдельный Warehouse или Data Lake и анализируют по необходимости. Основными инструментами являются Power BI, Tableau или даже пресловутый Excel. 

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

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

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

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

Худший ответ: Великие люди добивались успеха не спрашиваю чужого мнения, не слушали не кого. Хочешь бери и делай тебе не кто ничего не запрещает, интернет эта такая штука где ты можешь делать что тебе угодно! хочешь зарабатывать на сайте зарабатывай попробуй мыслить и трансформировать свои идеи не в фриланс а во что-то толковое, например создай какой нибудь стартап, сайт, форум, игру, мини игру, электронную книгу, пускай что-то мелкое что тебе не принесет огромных денег, зато ты будешь знать что это творение твоё и ты его сам создал, а там поверь люди сами подтянутся и думай самое главное не о том как можно много заработать денег и уехать жить в Москву или Los Angeles, нужно делать свою работу с удовольствием, а фриланс это так временно и особо много денег как новичек или специалист среднего класса ты там много не заработаешь, тобой будут пользоваться как и всеми остальными людьми. "Попробуй трансформировать свои идеи в что-то одно, не берись за все сразу, создай что-то одно и большое красиво". 
Сейчас ты увидешь под моим ответом положительные комментарии ведь такие люди пытаются сбивать остальных с толку что бы твоя мотивация и вера пропала. Я тоже в жопе может ты не в такой но у меня еще есть ребёнок маленький я думаю о том как трансформировать свои идеи, но пока-что в голову хорошая идея не пришла, были сны в которых я что-то якобы в интернете создал великое но они были так сильно размазаны что попытаться что-то вспомнить очень трудно.1
Вопрос: Как верстать такой прогресс бар?

Лучший ответ: В defs определяете градиент https://developer.mozilla.org/ru/docs/Web/SVG/%D0%... и в stroke круга вместо цвета пишите 
stroke: url(#название-градиента)
вот к вашему примеру
https://codepen.io/anon/pen/gBRRXX?editors=1010

Худший ответ: Go ссылку на то, что реализовано
Вопрос: Как правильно организовать разработку на Laravel + Docker?

Лучший ответ: У вас маленький проект и полноценный CI/CD к нему применить сложно - мало смысла в контейниризации, если нет необходимости скейлиться, балансировать и обеспечивать выживаемость сервиса. Разработка должна идти с использованием связки контейнеров с nginx, php-fpm, redis, postgresql и т.д. - при локальной разработке всё помещается в docker-compose. 
В проде - в вашем случае можно обойтись просто docker или с использованием того же docker-compose. В больших проектах на проде будет, например, kubernetes, nomad или docker swarm. Все контейнеры деплоятся и конфигурируются единожды. Ваш CI/CD должен собирать контейнер на основе alpine и php-fpm (для PHP) или nodejs (для nodejs, соответственно) с вашим проектом, желательно в пару стейджей для минимизации размеров окончательного образа, т.к. не нужен вам в проде композер, git, yarn, npm и прочие промежуточные штуки. И уже этот минимальный контейнер уезжает на прод.

Худший ответ: Поддерживаю Антона насчет https://laradock.io/
Рекомендую посмотреть/клонировать мою ветку https://github.com/dlnsk/laradock/tree/laradock_cl... (она не очень свежая). Я там сделал простенькую консольную утилиту, которая существенно упрощает запуск artisan, npm и др. в контейнере. Создал PR, но ребята что-то не чешутся (решили на Go переписать, но так ничего и не сделали), а я сижу и не жужжу... ;)
Вопрос: Какая cms для им из коробки потянет 65к товаров?

Лучший ответ: Заранее толком никто не скажет. Потому что товар может быть как название плюс фотка, так и большое монструозное скопище параметров и альтернативных версий. Но 65к товаров еще вполне подъемные для большинства движков.
Попробуйте собрать тестовую площадку на OpenCart, PrestaShop, Magento, Woo Commerce, ShopScript и смотрите.
Заодно немного пощупаете коммунити и потроха.
Из личного опыта плюсы и недостатки:
1. OpenCart - плагинов много (бывают и бесплатно), готовых тем оформления немного есть, но благодаря его активному развитию некоторые полезные плагины уже не запустятся на сильно новой версии. Платежные системы обычно предлагают готовый модуль для подключения к опенкарту, так что хорошо.
Довольно прост в своей структуре, но у него до сих пор логика слишком тесно переплетена с шаблонами, поэтому достаточно серьезный редизайн может потребовать бОльших усилий, чем ожидали.
Нкоторые плагины ставятся через патчинг на лету в памяти файлов ядра, поэтому если больше пары таких плагинов, то лишние тормоза и непредсказуемые странности, но в нынешней версии всё уже не слишком плохо.
2. PrestaShop в ранних версиях мог урониться от не самой страшной галочки в админке. Зато красивый, модульный и ООП.
3. Magento красивый, модульный, ООП и Zend. Довольно дорог в поддержке - специалистов сравнительно мало, конкуренции не очень.
4. Если вы выберете Битрикс (да, я его не советовал). Плюсы - подключение выгрузки товаров в 1С - одна страничка документации и несколько телодвижений. 
Но у вас будет две проблемы - его цена и цена специалистов. Стандартный интернет магазин, идущий в базовой поставке периодически страдал ошибками в шаблонах и логике поведения, любое решение проблемы за пределами техподдержки битрикса (они зайки, но могут не всё) становится дай-дай-дай со всех сторон :) При редизайне планируйте бюджет начиная от 100к рублей, всё что ниже - скорей всего будет альтернативно талантливым школьником, который вчера изучил PHP, а учитывая реально развесистую структуру проекта - будет проблемно в деталях проконтролировать работу специалиста.

Худший ответ: Любая CMS потянет и 65М товаров и 65Г товаров. Только старый Excel имеет ограничение на 64к строк.
Вопрос: Почему выдает ошибку после ввода пола?

Лучший ответ: print:( # Это двоеточие вас не смущает?

Худший ответ: внимательно на эти две строчки посмотритеprint:("идеальный вес для вашего возраста:")
print(otvet)
чем они отличаются?
Вопрос: Мониторинг серверных логов nginx, php-fpm, mysql?

Лучший ответ: https://www.elastic.co/elk-stack
Самый популярный стэк для логинга наверно.

Худший ответ: Есть такое https://amplify.nginx.com/login
Умеет мониторить php-fpm, nginx, mysql попробуйте может вам хватит его функций.
Вопрос: C++ что надо учить чтоб уметь создавать оконные програмы?

Лучший ответ: Наплюйте на WinAPI.
Учите C# или Qt.

Худший ответ: что надо учить чтоб уметь создавать оконные програмы?
Конечные автоматы. После этого -- немного многопоточности. После этого не составит труда разобраться и использовать любой GUI API.