Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Пример JAVA-приложения с использованием MVC?

Лучший ответ:
Например:
class MyView extends JFrame {
    ...
    JButton button = new JButton();
    button.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            Controller.getInstance().fireEvent(Events.OPEN_WINDOW);
        }
    });
    ...
}


В контроллере:
void fireEvent(Event event) {
    for (Listener listener: listeners) {
        listener.onEvent(event);
    }
}


Сам контроллер может быть event слушателем:

Controller implements Listener {
...
   void onEvent(Event event) {
        if ( event.equals(Events.OPEN_WINDOW) ) {
            // put here code for initializing and opening the window
            // NOTE: new window also can be listener of specific events
        }
    }
...
}


И работа с моделью:
 class MyView extends JFrame {
    ...
    JButton button = new JButton();
    button.addOnTextChangeListener(new TextChangeListener() {
        public void textChanged(TextChange e) {
            Controller.getInstance().fireEvent(new Event(Events.TEXT_CHANGE, e.getNewText()));
        }
    });
    ...
}   

Controller implements Listener {
...
   void onEvent(Event event) {
        if ( event.equals(Events.TEXT_CHANGE) ) {
            // find and update the module
            getTextContainer().setText(event.getData());
        }
    }
...
}


Естественно, TextChangeListener придуман для упрощения понимания, не знаю есть ли такой в Swing'e

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

Лучший ответ:
Фризы из-за сетевых задержек - это абсолютно реально.  По-другому клиент-серверную игру просто невозможно реализовать, она не может отдельно от сервера продолжать играть сама по себе.
А вот падение FPS - это признак плохой архитектуры. При хорошей архитектуре отрисовкой кадров занимается отдельный поток, который ни в какой момент не совершает синхронных вызовов сетевого ввода/вывода и продолжат рисовать кадры так быстро, как это возможно (но не быстрее vsync по уму) даже в моменты, когда геймплей замер в ожидании взаимодействия с сервером.

Худший ответ:
Да
Вопрос: USB микрофон, и динамики для raspberry pi?

Лучший ответ:
USB микрофоны - на алиэкспрессе по 3 бакса. Есть и по баксу
USB колонки... хм, а почему бы не купить USB звуковую карту за бакс? А в неё уже любой микрофон и колонки воткнуть

Худший ответ:
Blue Microphones Yeti - USB, хорошая чувствительность, сможет тебя без помех услышать даже на толчке, и включить музыку.
Вопрос: Типизированные Request и Response

Лучший ответ:
ИМХО, задача реквеста — принять входящие данные (POST/GET/COOKIE и прочие заголовки), инициировать запуск нужного метода контроллера, и вернуть реквест с результатом. Соответственно, вся логика (валидация, запросы к БД и т.д.) должна лежать в контроллере, но не запросе. Request — служебный класс, и его имеет смысл разбивать на подклассы, если возможны различные варианты обработки входящего запроса, но никак не подстраиваться под бизнес-логику.

Худший ответ:
А еще можно создать для пущей важности BaseRequest и BaseResponse и там чего-нибудь общее прописать, а потом уже от них наследовать Request и Response, ну и так далее. Можно еще для связи этих объектов сочинить еще какой-нибудь класс-посредник, а для пущей важности сделать объектами еще и все параметры, которые может получать Request, а уже в них для каждого прописать валидацию. Ведь это же ООП, не так ли? ;-)
Вопрос: Что означает выражение «работает из коробки»?

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

Худший ответ:
Работает без дополнительных действий, в стандартной поставке, при установке с настройками по умолчанию.
Вопрос: Как перенести сайт с хостинга на Dedicated Server?

Лучший ответ:
Если сами не знаете как - лучше не лезть.
Стоит обратится к тому, кто знает. За небольшую плату вам все перенесут и настроят.

Худший ответ:
1. Сделать бекап файлов и базы
2. Настроить web server, БД, php или иное, в зависимости от того что требутся сайту на новом сервере
3. Перенести на новый сервер  файлы и базу.
4. Подправить записи в DNS.
Если нужно не прерывать работу сайта, то все немного сложнее.
Вопрос: Какие СMS вы используете в разработке сайтов на php?

Лучший ответ:
Drupal. Структура чем то смахивает на любимый линукс. Поддержка мультисайтинга, расширяемость, несравненные по сравнению с другими возможности и гибкость, вытекающие из возможности взаимодействия модулей между собой на уровне api. Встроенный крон. Возможность работы с drush (drupal shell, адски упрощает и ускоряет работу). И да, конечно, модули CCK, Views, Rules, Actions и т.д. Подсел как на наркотик, с 4 версии на нем (текущая 7-ая). =)

Худший ответ:
Про то что использовал ModX Evo, писал в предыдущем топике. Revo рассматривал, имхо неюзабелен он. Допилил нужный функционал в Evo сам, вполне нормально получилось. Когда дерево документов большое (проблема 5000, гуглится легко) ощутимо притормаживает. Дописать функционал было не то чтоб прям приятно, но вполне нормально. Гораздо больше боли получил когда работал с VLC в другом проекте. Вот это ад документации.
Вопрос: Что это значит при подключении модуля?

Лучший ответ:
var config = require('config'); // подгрузка npm модуля с именем config
var config = require('./config'); // подгрузка файла config.js из текущего каталога
var config = require('../config'); // подгрузка файла config.js из каталога на 1 выше
var config = require('../config.js');  // то же, что и предыдущая строка

Худший ответ:
Во первых exports не рекомендуется использовать, лучше:module.exports
Во вторых достаточно написать:var config = {...};
module.exports = config;
Тогда не придется писать эту лажу:var config = require('../config').config;
Вопрос: Как в Twig сделать простой цикл, пока i < n?

Лучший ответ:
{#
    n разумеется можно задавать и в логике (или в gulp-data, если это сборщик фронта),
    это просто переменная
#}
{% set n = 3 %}
{% for i in range(1, n) %}
    {{ i }},
{% endfor %}

Худший ответ:
{% for i in n %} 
  Текущий: {{ loop.index }}
{% endfor %}
Вопрос: Существуют датчики на переменном токе?

Лучший ответ:
Датчики-то может и есть, только вот, что бы обрабатывать сигналы вам, наверное, всё таки понадобится использовать постоянное напряжение, т.к. логика (микроконтроллеры теже) будет просить постоянку от 3 до 15 Вольт(в зависимости от того, что используем).
Хотя какие-нибудь термоcтаты вполне хорошо будут сами замыкать/размыкать цепь 220В при достижении определенной температуры. :)
Обычно сетевое напряжение выпрямляется и понижается до уровней питания всей логики, а если она должна коммутировать мощную сетевую нагрузку, то делает это уже через реле/тиристоры.
Один из самых дешевых вариантов, если не будете трогать датчик руками и он не связан с чем-либо проводами - демпферные конденсаторы+диодный мост, но нет гальванической развязки от сети...
Есть готовые компактные маломощные модули 220AC->12DC и в 220AC->5DC, типо таких . Достаточно хороший и компактный блок питания, герметичный, с развязкой от сети.
Ну и прочий ассортимент блоков питания на любой вкус, цвет, напряжение и мощность.
По поводу датчика давления - он не один на все случаи жизни, экстрасенсов тут нет. Название или фото надо. Сами по себе датчики давления только выдают его в аналоговом или цифровом виде, но ничего не коммутируют, если он в паре логикой и с реле, то надо смотреть по характеристикам реле, оно может через себя пропускать уже постоянку/переменку в соответствии со своими характеристиками.

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

Лучший ответ:
Если Вы про домен .ua - то Hostmaster Ltd (по данным IANA). Отдельно домен брать имеет смысл, если сайт держите где сами знаете. Если нужен хостинг, то обычно провайдеры доменных имен и хостинг предоставляют.

Худший ответ:
услуга - регистрация домен 
услуга - сервер
это 2 разные услуги. 
я регистрирую пакетом (домены+хостинг)
можно попробовать Хостинг Украина 
больше берете услуг-больше скидка.
Вопрос: Телефонный справочник yii?

Лучший ответ:
Пару crud'ов сделать. Почитайте документацию на гитхабе

Худший ответ:
Доброе утро.
Во-первых, забудьте об yii1, используйте yii2. Почему забыть? А вот почему:На данный момент актуальной версией фреймворка явл...
Во-вторых, вот ссылка, там всё разжёвано, как создавать модели, поиск и всё остальное. Это одна из целой серии статей.
Так же ссылка на официальную документацию.
Вопрос: Помощь с началом обучения Yii 2?

Лучший ответ:
К словам Максима добавлю вот еще что, берите тестовые задания в компаниях, которые набирают yii-разработчиков. Это конечно же не учебник, но задания могут отражать потребности компании. Для себя самого очень полезно понимать, чего ты еще не можешь, а где преуспел.

Худший ответ:
Возможно кому-то поможет. ООП на PHP начал изучать с этого ресурса.
Вопрос: Как возвращать(return) массив из функцию с переменным количеством параметров?

Лучший ответ:
Первая ошибка - возвращать нужно не int,  a double*.
Вторая - вывод в принтф - опять же выводите инт(%d), это неверно. Формата для вывода массива даблов нет,  насколько я знаю,  надо выводить в цикле. 
Третья - выделение памяти неправильное. Откуда взялось 30 * sizeof(double)? Надо пройти по параметрам,  сначала узнать размер,  затем скопировать. Копировать можно с помощью memcpy, кстати,  а не циклом.
И ходить так по списку параметров кажется неправильно,  не знаю.

Худший ответ:
Ужас. Возвращать результат разыменования double* в int функции это сильно.
Видимо от вас ожидали в общих чертах примерно следующего:double *const getArray() {
    double *const result = new double[10];
    // Заполняйте массив как вам угодно
    return result;
}
Вопрос: Будет ли интересна на Хабре статья о APRS (местонахождении станции)?

Лучший ответ:
Да. Мне точно. Если не опубликуете здесь — то публикуйте где угодно, но ссылочку попрошу прислать )

Худший ответ:
Мне тоже будет интересно.
Вопрос: AWS или выделенный сервер?

Лучший ответ:
Выделенный сервер - это одна фиксированная железка, с определенным фиксированным объемом ресурсов. Платите вы всегда одну и ту же сумму, доступные ресурсы можете использовать частично или полностью - не важно. Если начнется нехватка ресурсов (или, что чаще, какого-то одного конкретного ресурса - RAM, CPU, FS etc), будет большой головняк - искать возможность довоткнуть нужное железо или заменить, или вообще покупать новый сервер и переезжать и тд. В случае поломки железа сайт отваливается целиком, ибо сервер перестает работать.
AWS, он же облачный виртуальный хостинг, дает множество преимуществ:
- платите только за те ресурсы, которые вам реально нужны и вы использовали
- при необходимости можно легко масштабировать ресурсы, при чем по отдельности - отдельно RAM, CPU и тд
- файлы на block storage, при наличии бекапов в случае поломки какого-то железа downtime минимальный
- можно (и для крупных проектов нужно) строить многосерверную архитектуру, разделяя балансировку нагрузки, фронт, статику, бек, базу (базы), АПИ, логгирование и мониторинг и тд и тп
- можно практически все автоматизировать - развертывание в случае поломки железа, downsclaing / upscaling в случае изменения потребности ресурсов и тд
В общем, это совершенно разные вещи. Что вам больше подходит - надо смотреть в конкретно вашей ситуации. AWS однозначно гибче, мощнее и тд. Но есть и минус - этим всем нужно управлять (и уметь это делать).
Как альтернатива AWS, есть еще Digital Ocean. Тоже гибко и удобно, дешевле, сильно проще в управлении.

Худший ответ:
Выделенный сервер - это одна фиксированная железка, с определенным фиксированным объемом ресурсов. Платите вы всегда одну и ту же сумму, доступные ресурсы можете использовать частично или полностью - не важно. Если начнется нехватка ресурсов (или, что чаще, какого-то одного конкретного ресурса - RAM, CPU, FS etc), будет большой головняк - искать возможность довоткнуть нужное железо или заменить, или вообще покупать новый сервер и переезжать и тд. В случае поломки железа сайт отваливается целиком, ибо сервер перестает работать.
AWS, он же облачный виртуальный хостинг, дает множество преимуществ:
- платите только за те ресурсы, которые вам реально нужны и вы использовали
- при необходимости можно легко масштабировать ресурсы, при чем по отдельности - отдельно RAM, CPU и тд
- файлы на block storage, при наличии бекапов в случае поломки какого-то железа downtime минимальный
- можно (и для крупных проектов нужно) строить многосерверную архитектуру, разделяя балансировку нагрузки, фронт, статику, бек, базу (базы), АПИ, логгирование и мониторинг и тд и тп
- можно практически все автоматизировать - развертывание в случае поломки железа, downsclaing / upscaling в случае изменения потребности ресурсов и тд
В общем, это совершенно разные вещи. Что вам больше подходит - надо смотреть в конкретно вашей ситуации. AWS однозначно гибче, мощнее и тд. Но есть и минус - этим всем нужно управлять (и уметь это делать).
Как альтернатива AWS, есть еще Digital Ocean. Тоже гибко и удобно, дешевле, сильно проще в управлении.
Вопрос: Нужен ли psd для material design?

Лучший ответ:
Нужен ли дизайн для того чтобы сверстать дизайн?

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

Лучший ответ:
Идея без реализации стоит ровно рубль.
Какой от вас профит?
Разработчики заняты разработкой, инвесторы вкладыванием/получением средств.

Худший ответ:
Не слушайте никого!! Планируйте и по-немного творите.... Удачи...
Вопрос: Кто имел опыт работы с индусами на ODesk?

Лучший ответ:
Есть очень грамотные товарищи, трудолюбивые, внимательные к деталям и т.д. но требуют пристального внимания и контроля. У нас не хватило нервов работать, пробовали несколько раз. Всё знает и умеет, но не шевельнет и пальцем если не попросишь, даже банальные, очивидные вещи. Как скрипт — если не прописать что делать то будет глючить :) Если есть подробное описание задания — может быть. Но если нужно принимать решения — не советую.

Худший ответ:
У меня было так, пообщался с несколькими кандидатами (заказ был по Unity3d) выбрал одного человека который казался очень адекватным (из тех что до меня были отобранны овнерами организации) - кандидат показывал примеры своего нормального кода, примеры довольно интересных проектов, говорил, что у него есть в команде дизайнер с которым он постоянно сотрудничает (тоже показывал его работы они были так себе но под задачу этих скиллов было достаточно) - вобщем договорились о первом тестовом такске с предоплатой 100$ (по сути это было тестовое для дальнейшего долгосрочного сотрудничества над большим по часовым проектом), задача была разжована максимально, никакого творчества не подразумевала. После старта и получения предоплаты он пропадал и на все сообщения кормил разные байки, вообщем гдето через недели 2 после предполагаемого завершения таска он пропал окончательно так ничего и не показав - но через год он написал поздравление с днем рождения :)
Думаю, что этот случай не правило, но нужно понимать, что у них несколько другие представления об ответсвенности,  сроках, и исправлении своих ошибок.
Вопрос: Не работает свойство transition?

Лучший ответ:
transition с display не работает
используйте для скрытия:visibility: hidden;
opacity: 0;
для показаvisibility: visible;
opacity: 1;

Худший ответ:
display: none не дружит с transition
используй opacity
Вопрос: Как на Хабре относятся к постам о мошенничестве?

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

Худший ответ:
За мошенечество в заголовке.
Вопрос: Существует ли корпус для arduino pro mini?

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

Худший ответ:
Выбирай подходящий https://www.chipdip.ru/catalog/cases
Вопрос: Как обмануть сервер Dial-up Win98, чтобы он работал без звонка?

Лучший ответ:
Похоже на коммутатор с барышней в Смольном...

Худший ответ:
Подайте переменки 80В; этого должно быть вполне достаточно.
Вопрос: Резервное копирование

Лучший ответ:
Symantec NetBackup это все умеет и мы его используем. Но он платный и даже очень :)

Худший ответ:
Под ваши требования подходит Symantec Backup Exec или Simpana CommVault, или HP DataProtector, или IBM TSM, или Symantec NetBackup, однако я бы порекомендовал Veeam Backup & Replication, он хоть и не умеет бекапить отдельные приложения и файлы внутри ВМ, но является одним из лучших решений по резервному копированию ВМ на VMware vSphere.

Среди плюсов Veeam Backup & Replication:
-Консистентный бекап файлов и данных приложений внутри ВМ, без необходимости установки агентов.
-Встроенная дедупликация и архивирование бекапов.
-Возможность гранулярного восстановление отдельных файлов и данных приложений (SQL, Exchange, AD).
-Возможность запуска ВМ прямо из бекапа с последующей миграцией ВМ с помощью vMotion или Storage Migration.
-Возможность автоматической проверки резервных копий по расписанию.
-Возможность создавать консистентные реплики ВМ по расписанию.

Недостатки:
-Напрямую не может бекапить на ленты, однако у одного из наших заказчиков бекапы Veeam на ленты забируются с помощью Backup Exec.
-Бекапит только виртуальные машины (VMware vSphere или Microsoft Hyper-V). Для бекапа физической инфраструктуры потребуется использовать что-то другое.

P.S. обратите внимание, что далеко не все СРК поддерживают ESXi Free, будучи у вас таковой.
Вопрос: LiveReload/LiveEdit для WebStorm/PHPStorm + Firefox Developer Edition?

Лучший ответ:
> P. S. Gulp-ом и прочими "современностями" не пользуюсь пока что. Читал, что можно с помощью gulpa, но мне этот вариант не подходит.
это единственный нормальный для вас вариант + https://www.browsersync.io/

Худший ответ:
webstorm может это без использования gulp
плагин называется LiveEdit, есть расширение для Chrome
Почитать можно тут https://www.jetbrains.com/webstorm/help/live-editi...
Вопрос: Что происходит при гибернации с ноутбуком, включённым в сеть?

Лучший ответ:
Что происходит при гибернации с ноутбуком, включённым в сеть?Если зарядное устройство подключено - заряжается.
Если зарядное устройство отключено - разряжается.Правильно ли я понимаю, что если ноутбук включён в сеть и имеет, например, 80% заряда, то в режиме гибернации заряд изменяться не будет, т.е. подзарядки до 100 не произойдёт?Не правильно.
Он будет заряжаться.
Работа зарядного устройства никак не зависит от того включен ноутбук или отключен, главное чтобы питание подавалось на зарядное устройство.

Худший ответ:
Здравствуйте. Правильно ли я понимаю, что если ноутбук включён в сеть и имеет, например, 80% заряда, то в режиме гибернации заряд изменяться не будет, т.е. подзарядки до 100 не произойдёт? 
При гибернации "спит" только операционная система и запущенный на ней прикладной софт.
Управление зарядкой аккумуляторов, к счастью, реализовано с помощью независимой от операционной системы микросхемы.
Будет заряжаться.
Вопрос: Как правильно хранить настройки в django проекте?

Лучший ответ:
разнести настройки "по категориям" Никогда такой надобности не было
settings1.pyfoo='bar'
settings.pyfrom settings1.py import *зависимости от environment, например, db.py разный для prod\dev\testmyprog
├── manage.py
└── myprog
    ├── __init__.py
    ├── settings
    │   ├── __init__.py
    │   ├── global.py
    │   └── settings_test.py
    ├── urls.py
    └── wsgi.py
__init__.pyimport os

if os.environ['test']:
    from settings_test.py import *
global.py/main.py/...# common settings for all env types
settings_test.pyfrom global.py import *

foo='buzz'

Худший ответ:
your_project_root/your_project_name/settings/
├── base.py
├── development.py
├── __init__.py
├── local.py
├── production.py
└── testing.pybase.py - глобальные настройкиtesting.py - тестовый серверproduction.py - рабочий серверlocal.py игнорируется VCS и содержит ссылку на актуальный файл настроек + необходимые, скажем, данному конкретному разработчику коррективы, скажем доступ к его локальной СУБД:from .testing import *
DATABASES = ...__init__.py:from .local import *
И всё.
Вопрос: Как правильно настроить ext4 для SSD?

Лучший ответ:
discard не рекомендую, очень сильно будет проседать производительность. Достаточно периодически запускать fstrim (в Ubuntu по-умолчанию запускается раз в неделю, в OpenSUSE нужно смотреть).
Если SSD не старше лет 5-7, то можно не запариваться по поводу параметров, всё равно угробить ячейки перезаписью у вас в ближайшие 10 лет при нормальном использовании не получится (если вы только не пишете объемы равные объему SSD каждый день, тогда за год-два можно и убить).noatime будет более чем достаточно.

Худший ответ:
https://klondike-studio.ru/blog/raid-ssd-trim/?sph...
я тут писал
Вопрос: Как получить список функций во время работы?

Лучший ответ:
Если у вас стоит GCC, тогда можно глянуть вывод gprof (профайлера). Там будет список функций и количество вызовов. 
Имена файлов придется определять ручками, чем-нибудь типа grep.
Собираем с флажком -pg , запускаем, через некоторое время закрываем. Логи пишутся в gmon.out, который открываем через gprof путь/к/бинарнику путь/к/gmon.out
Не знаю, сработает ли то же самое с clang'ом, но вроде должно.

Худший ответ:
Я думаю что какой нибудь visual assist умеет показывать количество вызовов функции в коде. Если вы конечно их вызываете напрямую.
Вопрос: Возможно ли использовать Ubuntu, установленную на внешний HDD для веб разработки?

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

Худший ответ:
Для веб-разработки действительно хороший ноутбук не нужен. Я для работы себе взял за 20к ноут с 17" диагональю и полноценной клавиатурой. А для всего остального у меня десктоп есть ;)
Вопрос: Почему тормозит сайт?

Лучший ответ:
.и могут ли 4 слайдера и 2 видео так тормозить страничку?
- могут, если написаны криво.
Это всё, чем вам можно помочь при таком обьёме исходной информации.

Худший ответ:
Кривой код + куча несвязного jq + кривая работа с dom = утечка памяти.
Вопрос: Сколько стоит продать неиспользуемый домен?

Лучший ответ:
Нисколько.

Худший ответ:
Паркинг домена, это когда на нем крутится реклама и вам капают отчисления.
Паркинг имеет смысл только если на домене есть трафик (например б/у домен с внешними ссылками, опечатка от известного домена).
В вашем случае паркниг ничего не принесет, ровно как и попытка продать его.
К сожалению это так.
Вопрос: Правильные ли ресурсы выбраны для изучения HTML/CSS, JS, PHP?

Лучший ответ:
За время, потраченное на написание этого вопроса (который риторический), можно было бы выучить пару-тройку десятков тегов.
Начни прям сейчас!
a - ссылка
p - параграф
div - блок
Главное начать. )

Худший ответ:
лучше сразу выбирайте специализацию