Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Когда нужно использовать computed, а когда methods во Vue.js? И в чем их разница?

Лучший ответ:
Если результат вашей функции не опирается на внутренние данные, используйте methods.
 Например, у вас есть внутри vue некая range, которая служит верхней границей для Math.random. Если реализовать при помощи метода, то каждый раз он будет возвращать новое значение Math.random.
Реализация через computed будет ожидать изменений вашего range, а иначе вернет то же число, которое сгенерилось первый раз
js:var app = new Vue({
        el: '#content',
        data: {
            range: 1
        },
        computed: {
            rand: function () {
                return Math.random() * this.range ; //ожидалось что app.rand будет давать случайное число
            }
        },
        methods: {
            show: function (event) {
                alert('Случайное число: ' + this.rand); // но нет, число одно и то же
            },
       }
});
html: <div id="content">
<button v-on:click="show">показать число</button>
</div>
В итоге оно сгенерирует число один раз и будет выводить его постоянно при клике на кнопку. Если вы введете в консоли app.range = 2; то генерируемое число разово изменится. 
Пример для лайков, упомянутый в комментарии:new Vue({
   el: '#content',
   data: {
      likes: 0,
   },
});<div id="content"><button v-on:click="likes += 1">+1</button></div>

Худший ответ:
Computed это тоже самое что и methods
Разница лишь в том что в methods, методы нужно вызывать в ручную 
А в computed методы сами выполняются, это происходит из-за изменений в переменных ( которые проинициализированных в data)
К примеру 
new Vue({
   el: '#content',
   data: {
      counter: 0,
   },
   computed: {
   message(){  
        let res = '';
        if(this.counter === 5){
            res = 'Здесь число 5'
       }
        return res
    }
}
});
При изменение counter будет автоматически выполняться метод message

Те кто хорошо знает что  message в computed используются как переменные, это я знаю привёл такой пример потому что так легче понять, а в практике проясниться что где и как.
Вопрос: Как сделать динамическое увеличение кол-ва структур?

Лучший ответ:
Если у вас С++, а не чистый Си, то конечно используют std::vector. А вместо char[] используют std::string.
Если Си, то придётся выделять динамически через malloc.

Худший ответ:
Как уже советовали, проще всего использовать std::vector. Но тут важно понимать то, что при перевыделении памяти элементы вектора копируются. Поэтому если можно посмотреть в сторону std::list или хранить структуры по указателям в векторе.
Вопрос: Есть ли «жизнь» на русскоязычных биржах?

Лучший ответ:
А за бугром толпы индусов. Никто не обещал что будет легко.

Худший ответ:
Есть.
Вопрос: Как отвечать на POST запросы Python?

Лучший ответ:
Устанавливаете falcon, gunicorn, nginx import falcon
import json

class CResourse(object):

	def on_post(self, req, res):
              data = json.load(req.stream)
              res.status = falcon.HTTP_200
              res.body = 'ddd'

app = falcon.API()
app.add_route('/callback', CResourse())В настройках паблика указываете адрес domain.com/callback

Худший ответ:
В соответствии со стандартом HTTP.
Вопрос: Почему не работает PlayerPrefs?

Лучший ответ:
GavriKos конечно все в комментариях порешал))
но оставлю для людей ленящихся читать.
переменные
people_all
people_in_golden_int
надо на старте игры инициализировать. в данном случае из PlayerPrefs подгрузить значения.))
а иначе так и будет там по умолчанию значение, заданное в скрипте/редакторе

Худший ответ:
Для тех,кому окажется это полезным, вот так примерно выглядит скрипт загрузки префсов,который мы помещаем на отдельный игровой объект, активный с самого начала. public class Loading : MonoBehaviour {
    public GameObject people;
    public GameObject people_in_golden;
    public GameObject gold;
   
	// Use this for initialization
	void Start () {
        

        gold.GetComponent<Text>().text = PlayerPrefs.GetFloat("Gold").ToString();
        people_in_golden.GetComponent<Text>().text = PlayerPrefs.GetInt("people_in_golden_int1").ToString();
        people.GetComponent<Text>().text = PlayerPrefs.GetInt("People_how_many1").ToString();
    }
Вопрос: Переводят ли легаси .net на .net core?

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

Худший ответ:
Те, кого я знаю и с кем работал - переводят.
Вопрос: Как найти элемент Dom через переменную?

Лучший ответ:
Можно вообще убрать этот лишний поиск в DOM$(document).ready(function () {
    $('#email').on('input', function () {
        emailValidation(this.value);
    });

 function emailValidation(email) {
        // your regexp stuff here
        ...
}

Худший ответ:
Всё ж работает, в чём проблема?
Вопрос: Где находятся стили темы для css в wordpress?

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

Худший ответ:
домен/wp-content/themes/тема/css (скорее всего) или styles
Вопрос: Изменение цены при активном checkbox?

Лучший ответ:
Поставьте событие onchange на чекбокс$("#checkboxId").change(function(event) {
    // алгоритм изменения цены 
});

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

Лучший ответ:
И. М. Виноградов. Основы теории чисел. стр. 8.

Худший ответ:
Гуглите алгоритмы деления с остатком. Есть разные, в которых налагаются различные требования на знак остатка, например. Одни ЯП используют один алгоритм, другие — другой.
Вопрос: Можно ли в ОпенСервере создать сайт, в котором index.php, который инклюдит сайт/index.php из дропбокса?

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

Худший ответ:
Просто укажите где должен OpenServer искать файлы сайта
И не нужно никаких симлинков
Вопрос: На чем лучше делать серверную часть для мобильного приложения на iOS (SWIFT) и Android (Java)?

Лучший ответ:
Что знаете, на том и пишите.

Худший ответ:
Серверная часть и iOS. Повеселили. Какое отношение к  серверной части имеет iOS, мб просто Swift, эмм? А если по делу, то наверное серверную часть не пишут ни на одном из этих языков. Java - забыть как страшный сон(ИМХО). Swift тема крутая, + на Линкусе без проблем крутится, но он пока молод. На сервер его ещё рано. Не вся основная библиотека(Foundation) переделана от привязки к obj-c runtime. Пишите на том, на чём пишут все: NodeJS, Php, Ruby, Python.
Вопрос: Coroutine, для чего они нужны?

Лучший ответ:
Coroutines реализуют кооперативную многозадачность между green_threads внутри одного процесса (ОС обо всем этом не догадывается, ее потоки не имеют к этому никакого отношения). В момент "вызова" сoroutine происходит переключение "зеленых" задач вместо собственно вызова функции. Задачи, ожидающие завершение ввода/вывода, получают управление, если их ввод/вывод завершен (или таймаут истек). 
Для чего все это нужно? Потоки ОС слишком тяжелые. Они занимают много стека (памяти). Их создание/уничтожение требует времени. Переключение между ними происходит через ядро ОС (слишком медленно). Большое количество, одновременно активных, потоков может подвесить всю систему. В реальных приложениях/серверах количество потоков типично измеряется максимум десятками ("зеленых" потоков могут быть десятки тысяч). Для преодоления проблемы C10K назрела необходимость переходить на асинхронное программирование с "зелеными" потоками вместо потоков ОС. Осталась одна проблема - переключение задач (которое теперь должно осуществляться вручную); кто и в какой момент должен это делать?
Это переключение может происходить в io_loop (цикле ввода/вывода) специальной библиотеки, которая отвечает за асинхронность всего приложения (например, asyncio в python). А чтобы поток управления из кода возвращался в io_loop, нужно заменить прямые вызовы функций на асинхронные "вызовы" короутин.
В начале 90-x вытесняющая многозадачность на процессорах 80386 казалась совершенно прорывной технологией. Кто бы мог подумать, что через 20-25 лет мы (в каком-то смысле) вернемся назад к кооперативной многозадачности.

Худший ответ:
Например - можно реализовывать на них всякую асинхронщину (например - пока ждём ответа от такого-то сервиса - можем в том же потоке обрабатывать новый запрос). Всяко лучше callback hella-а из javascript.
Вопрос: Как правильно организовать ajax запросы в MVC архитектуре?

Лучший ответ:
Логичнее вынести все в ajaxController() и работать в нем только с запросами аякса, это в частности позволяет в конструкторе контроллера не вызывать кучу специфических для данного раздела методов, а так же сразу определить для вью соответствующий лэйаут, однако это как раз не всегда удобно. По этому у меня есть аякс контроллер, в который я отсылаю только аякс запросы общего назначения, не привязанные к какому то конкретному разделу(в конструкторе сразу можно обработать тип и сделать ексит если не аякс), а запросы с более четким типом, например работа с пользователем, идет в свой контроллер, и уже в экшене проверяется тип запроса и производятся нужные действия. Это немного более накладно по ресурсам(из за конструктора с доп. функционалом), но более удобно в плане "все подобное в одном месте".
На уровне роутера имхо никаких обработок быть не должно, его задача отдать роут, а контроллер уже создает логику ответа.

Худший ответ:
Добавьте стандартному контроллеру функцию определения типа запроса из хедера и в зависимости от этого выдавайте содержимое View либо чистый  Json.
Вопрос: Почему долго запускается компьютер (на нормальном железе)?

Лучший ответ:
новый хард на 1 ТБЖелезо не очень то и нормальное.
Для такого железа долгий запуск это норма.

Худший ответ:
Время запуска BIOS: 25-35 секунд.
Эм... то есть нажатия кнопки включения до входа в настройки BIOS или до появления отчёта POST?
Извлеки батарею - зайди в BIOS - сбрось настройки - перезагрузись - проверь.
Вопрос: Кто-нибдуь привозил pfsense железку?

Лучший ответ:
Что мешает взять любой сервер и поставить pfSense самому?
Это обычный многопортовый компактный компьютеры с картой памяти вместо жесткого диска. Такие можно купить и без pfSense и поставить на них что хочешь.

Худший ответ:
Или, альтернативно, подскажите какие-нибдуь 1u сервера которые можно использовать вместо? Нужно много портов. 2spf+ и 4eth минимум.
mikrotik.ru/katalog/katalog/hardware/routers
Выбирай. Вебинтерфейс, ssh, winbox, есть тулза thedude для консолидированного управления. Выйдет дешевле чем 2.5 килобаксов.
если прям уж хочется pfsense выбираешь любой сервак и добиваешь сетевыми картами. Но тоже выйдет дорого.
Вопрос: Выборка json или mysql?

Лучший ответ:
json - это формат обмена данными.
mysql - это система управления базами данных.
Как вы их можете сравнивать?)

Худший ответ:
Быстрее будет через MySQL,  так как вы сможете сразу составить запрос поиска по введеной пользователем букве,  а если использовать json то нужно будет открывать весь файл и потом искать.
Вопрос: Как убрать зелёные отступы и пробелы в nano?

Лучший ответ:
Советую использовать micro в качестве редактора в консоли. Перешел на него после nano и доволен как слон. На сайте есть список возможностей. Установка предельно проста, один бинарный файл, который можно переписать в /bin после скачивания curl https://getmic.ro | bash
Можно менять тему, если не понравился тот, что по умолчанию. Я так понимаю, это для Вас важно.
Плюс человеческие горячие клавиши:
  Выделение шифтом
  Копирование и вставка по Ctrl+C и Ctrl+V
  Выход Ctrl+Q, сохранение Ctrl+S
Использование табов, установка плагинов, подсветка синтаксиса, ...

Худший ответ:
Это подсветка синтаксиса, вот так захотелось авторам :)
В каталоге  /usr/share/nano/ ищите *.nanorc файл интересующего вас синтаксиса и редактируйте под себя.
П.С. если каталог является GIT репой то это ещё и индикатор строк изменённых.
Вопрос: Почему React.createClass is not a function?

Лучший ответ:
Есть новая версия этого учебника https://maxfarseer.gitbooks.io/react-course-ru-v2/... - где ты не столкнешься с этой проблемой.
Чтобы у тебя заработал React.creatClass найди CDN с более старой версией реакта. 15.4 вроде работала
Про ошибку CORS много информации в интернете. Вот вариант с оф. сайта реакта https://reactjs.org/docs/cross-origin-errors.html

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

Лучший ответ:
.main{
   height: calc(100% - 50px);
   overflow: auto;
}
50px - высота темного, сырого подвала

Худший ответ:
Футер поместите в main, уберите цсс, что написан у Вас, и достаточно<body>
    <div class="main">
        <div class="content">
        </div>
        <div class="table">
             Этот див рендерится динамически
        </div>
         <div class="footer">
         </div>
    </div>
</body>.main {
   min-height: 100vh;
   display: flex;
   flex-direction: column;
   justify-content: space-between;
}
.content и .table по хорошему тоже лучше обернуть в 1 див, но не обязательно
Вопрос: Как на Yii2 грамотно закрыть сайт?

Лучший ответ:
Используйте для этого свойство приложения catchAll
более подробно почитать можно здесь https://github.com/yiisoft/yii2/blob/master/docs/g...

Худший ответ:
В самом начале запроса проверяете — есть ли в запросе кука (или любой другой идентификатор админа), если нет, то показываете заглушку.
Для этой цели подойдет, например, on beforeRequest
Вопрос: Как передать массив в функцию и вернуть исходный массив, после сортировки?

Лучший ответ:
Во-первых, не нужно разделять PrintArray и SourceArray. Код у них один и тот же.
Во-вторых, массив передается в BubbleSort по указателю, то есть, если BubbleSort меняет массив, то он меняется вообще.
Вам нужно перед вызовом BubbleSort скопировать массив, и в функцию передать копию. Например:int array_copy[size];
memcpy(array_copy, array, size);

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

Лучший ответ:
Почему нельзя просто взять std::set или любую другую реализацию структуры данных Set (множество)?
Нажали кнопку - добавили в set за O(1). Отжали клавишу - убрали из множества за O(1). Надо проверить? Пожалуйста - lookup O(1).www.cplusplus.com/reference/set/set

Худший ответ:
Заведите массив состояний клавиш и используйте функцию SDL_GetKeyboardState (SDL Wiki).
Затем используя перечисление SDL_Scancode просто проверяете нужную клавишу.const Uint8 *state = SDL_GetKeyboardState(NULL);
if (state[SDL_SCANCODE_RETURN]) {
    printf("<RETURN> is pressed.\n");
}
if (state[SDL_SCANCODE_RIGHT] && state[SDL_SCANCODE_UP]) {
    printf("Right and Up Keys Pressed.\n");
}
Вопрос: Среднее количество обращений к БД?

Лучший ответ:
5 это нормально, не беспокойтесь. Количество не всегда важно, иногда и один запрос может базу положить ))

Худший ответ:
Пользователя то можно и в сессии хранить! )))
Если категорий не так много, можно и в кеш и из кеша брать )
А зачем так много запросов? почему нельзя в корзину сделать 1 запрос (положить в корзину продукт с таким то id)?
Вопрос: Что такое «программирование сокетов»?

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

Худший ответ:
Сокет — это абстракция, принятая в Unix и перешедшая в Windows, представляющая собой сетевое соединение.
https://ru.wikipedia.org/wiki/Сокеты_Беркли
Вопрос: Как работают проекты написанные на нескольких языках?

Лучший ответ:
Ассемблер пока что един, DLL API тоже. Через них это всё и работает. Ваш код оборачиваете в DLL, выставляете из него интерфейс и работаете как с любой другой подключаемой библиотекой.

Худший ответ:
Вариант 1: P/Invoke.
Вариант 2: C++/CLI.
Вариант 3: отдельно работающий сервис на C++, выставляющий API по HTTP/Protobuf/ещё что-нибудь.
Вопрос: Как скрыть Linux из списка загрузок ОС?

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

Худший ответ:
Брррр.... Чего хотите то сделать? 
Если хотите поменять что-то в грузчике grub, то Вам в редакторе открыть /etc/default/grub. Все настройки тут хранятся. И в зависимости чего Вы хотите (скрыть\убрать\поменять\не загружать\изменить дефолт os) поменять значение в нужной строке. Потом sudo update-grub. Или тоже самое через grub-customizer.
А выбор с какого диска(usb\linux\win) грузить через биос. У каждого свой загрузчик.
Вопрос: Как настроить SSH в VirtualBox?

Лучший ответ:
При установке убунты Вы создавали пользователя и указывали ему пароль, поэтому в user name указываете этого пользователя либо root, а в пароле - пароль данного пользователя, который вводили при установке убунты

Худший ответ:
Юзернейм - тот, от имени какого пользователя вы хотите стартовать сессию SSH. Естественно пользователь ОС-и на виртуалке.
Вопрос: В чем удобство ставить boolean константу/строку/число в начале выражения?

Лучший ответ:
чтоб по ошибке не написать = вместо ==/===($media->delete() = false) - валидно(false = $resource->delete()) - не валидно
других причин нет.

Худший ответ:
$result = $resource->delete();
if(false = $result) {} // Parse error
if($result = false) {} // плавающий баг, счастливой отладки...
Вопрос: Как организовать просмотр сериалов с домашнего сервера через интернет?

Лучший ответ:
Plexmediaserver
Плюсы – объединяет сериалы по сезонам, отмечает просмотрено / непросмотрено, показывает обложки, описания, актеров-режиссеров, жанры и всё такое. Так же и с кино.
Минусы – за просмотр контента в приложениях на медиаплеерах хотят подписку. За деньги. Приложения на iOs или вебклиент показывают всё без лишних вопросов.

Худший ответ:
Если на тике PPTP VPN то скорость нормальная. На тиках VPN чаще плохой и очень медленный особенно на RB, пробуйте отключить шифрование и все остальное. Еще проверьте правила фаирвола\ната\маскарада, засада может и тут крыться.
Так же, если включаете шифрование то скорость всегда будет проседать до 2-15 мбит\с если только в вашем роутерборте нет криптоакселератора. Если он есть можно смело включать. Еще нужно глянуть на потери пакетов, возможно надо mtu подвигать.
Еще попробуйте разные впнки pptp\ovpn\l2tp.
Самое главное нельзя исключать возможность того что провайдер теряет\дропает vpn пакеты. Так же возможно что на wan порт кто то ддосится(особенно если днс на внешку смотрит).
PS в общем нужно больше исходных данных.
Вопрос: Как правильно хранить личные сообщения бесед/диалогов в MySQL используя node.js?

Лучший ответ:
я б сделал три таблицы:
1. Диалоги Conversations(id, name, type, status), где type - открытый чат, закрытый чат, общий чат, status - диалог открыт, диалог завершен, диалог помещен в архив.
2. Участники Conversation_Users(conversation_id, user_id) - (conversation_id, user_id) - уникальные.
3. Сообщения чата Conversation_Messages (id, conversation_id, user_id, send_date, message).
Если диалог закрыт и прошло больше определенного времени (месяц, год), то можно все связанные данные сериализовать и кинуть в файл или таблицу архивов, ненужные данные удалить.

Худший ответ:
Для хранение архива чата используется Redis
https://github.com/dwyl/hapi-socketio-redis-chat-e...
Вопрос: Меняется ли хеш архива при повторном сжатии?

Лучший ответ:
Есть два способа это узнать наверняка:
1. Проверить самому
2. Изучить спецификацию
Я к сожалению спецификацию не изучал, но склоняюсь к тому, что хеш при каждом архивировании будет разный (ну там всякие ключи генерятся и timestamp другой)

Худший ответ:
да
Вопрос: Как сделать ajax post запрос с headers и body?

Лучший ответ:
Если в теле нужно отправить JSON, то попробуйте так:var data = {
  "SiteInfo": {
    "SiteURL": "devsite",
    "WebName": ""
  },
  "TaxonomyGuid": "d3eaa59d-f18f-40ae-8b74-57233738d4e2",
  "TermStoreName": "Managed Metadata Service Application"
}

$.ajax({
  url: site,
  type: "POST",
  headers: {
    "Accept": "application/json; odata=verbose"
  },
  data: JSON.stringify(data),
  processData: false,
  .....
})

Худший ответ:
В заголовках поменяйте: "Accept"  - > "Content-Type"
Вопрос: Что лучше выбрать для работы с базами данных в web2017? Какие связки существуют?

Лучший ответ:
ASP.NET + C# + MS SQL.
Уже выпущена нативная версия .NET Core под Линукс и Мак. Работает в разы быстрее, чем пых, питон и нода, т.к. полная компиляция (в том числе и шаблонов).

Худший ответ:
Java в связвке с Lombok или Kotlin + Spring Boot + любая СУБД (MySQL/PostgreSQL)
Вот так например:тык
Вопрос: Нужно ли фрилансеру дизайнеру иметь оплаченный аккаунт на стоковом ресурсе?

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

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

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

Худший ответ:
Такая простая проверка на существование сессии вообще приемлЕма?
ДаМожно ли обойти ее?
Думаю, что можно обойти все и всегда. Просто иногда это долго или не нужно )))
Вопрос: Долго ли можно не заморачиваться с продажами на сайте без оформления юрлица?

Лучший ответ:
Десятилетиями это делают.

Худший ответ:
Для совершения продажи нужен чек. Чек может выписать лишь оформленное лицо. Если чек не спрашивают - можно и забить.
По опыту к регистрации юрлица приходят тогда, когда надо заключать ПАРТНЕРСКИЕ отношения с другим юрлицом.
Вопрос: Какие книжки/статьи наиболее предпочтительно прочесть для разработки мобильной версии настольной игры на Unity?

Лучший ответ:
Нанять разработчика

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