pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Почему не закрывается вход и происходит ли утечка ресурсов Java?

Лучший ответ: Необходимо закрыть сканнер, когда вы закончили считывание. 
Согласно современному подходу (с JDK 7) следует обернуть в try...catch с автозакрытием ресурсов:String name;
String surName;
int yearBorn;
int yearNow;
try (Scanner input = new Scanner(System.in)) { // input автоматически закроется
    System.out.print("Your name:");
    name = input.nextLine();
    System.out.print("Your middle name:");
    surName = input.nextLine();
    System.out.print("What is the year now?");
    yearNow = input.nextInt();
    System.out.print("What year were you born?");
    yearBorn = input.nextInt();
    System.out.print("Hello, "+name+" "+surName+" ");
    System.out.print("Your age: "+(yearNow-yearBorn)+"");
} catch(Exception e) {
    //Обработка исключения, если возникло.
    e.printStackTrace();
}
Или устаревший вариант с ручным закрытием:Scanner input = new Scanner(System.in);
try {
  ...
} catch(Exception e) {
   e.printStackTrace();
} finally {
   input.close(); // Закрываем
}

Худший ответ: Алексей Т 
... современному подходу (с JDK 7) .....  устаревший вариант 
тысяча спасибо за классификацию -  у вас есть ссылка где сказано что устарело и вообще о lagacях  ?
Вопрос: Трудно ли сделать успешную игру для стима, сколько это будет стоить?

Лучший ответ: Я бы на вашем месте начал с того, что сделал бы просто змейку. Можно даже из текстовых символов. Потом, в зависимости от того куда вы хотите развиваться (управление, программирование и тп), начал пробовать заказывать небольшие работы у фрилансеров и пробовать компоновать. В небольшую игру типа тривряд. Несколько небольших игр для мобильных будет неплохим стартом. Тут вы поймёте проблемы и с художникам, и с гейм-дизайнерами, и с продвижением, и с монетизацией, и с технической поддержкой пользователей, и ещё с целой кучей. И так - от малых проектов к большим. А начинать сразу с большого у вас просто не получится, тем более без опыта.  
По поводу времени - Студия GSC, которая делала сталкера, изначально занималась локализацией западных проектов и на этом зарабатывала. Потом появились казаки (через 6 лет после создания фирмы!). И только ещё через 6 лет вышел сталкер (то есть от создания фирмы, до выпуска игры прошло 12 лет)
По поводу команды - собрать можно и в снг, но реально профессиональные люди требуют хорошую зарплату.

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

Лучший ответ: Удобней кому? 
Вам - смотрите сами.
Китайцам - UnionPay. Про WebMoney они не в курсе.

Худший ответ: еще Alipay, но куда менее распространен
Вопрос: Как отключить индексацию дисков в win 8.1 64 bit?

Лучший ответ: Если нужно полностью отключить индексирование - вырубите службу Windows Search.
Если же только на диске Д, то вам винда сама говорит что делать - выполните операцию с админскими правами.

Худший ответ: Запусти строку с правами администратора и введи команду NET STOP «Windows Search», она временно! приостановит индексирование файлов жесткого диска
Вопрос: Где найти бесплатный VPS для стартапа?

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

Худший ответ: В мышеловках со смузи вместо сыра.
Вопрос: Какой (S)FTP плагин использовать для VSCode?

Лучший ответ: В общем, попробовал практически все плагины по поиску "FTP", остановился на варианте Remote FS. Он конечно достаточно своеобразно настраивается через Рабочие области и общие настройки, но работает неплохо. 
И все же, было бы здорово, если бы кто-то форкнул remote-ftp под VSCode.

Худший ответ: Тогда получается этот плагин подключает удаленную папку но несколько вопросов:
1. при редактировании скачивается ли файл локально?
2. есть ли проверка при сохранении или открытии локального файла с удаленным файлом? (вдруг на сервере его заменили)
Вопрос: Как парсить Json с другого сайта, через Jquery или JS?

Лучший ответ: var response = // Ваш AJAX запрос
var jsonObj = JSON.parse(response);

// Печатаем в консоль id из вторых фигурных скобок
console.log(jsonObj[1].id);

Худший ответ: Можно использовать сокращение$.getJSON( "testlodtask20172.azurewebsites.net/task", function( data ) {
  // в data ваш объект
});
Вопрос: На каком движке php лучше написать доску объявлений?

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

Худший ответ: На том, который хорошо знаете.  Или который хотите изучить.
Вопрос: Как выбрать SSD для ноутбука (см. дополнение)?

Лучший ответ: Б/у брать не стоит из-за возможных проблем с надёжностью. На алике тоже, может оказаться медленный или ненадежный. Так что лучше новый от известных фирм (OCZ, Samsung, Intel, Kingston...)

Худший ответ: Если вы готовы заниматься пересылками SSD обратно продавцам, как несоответствующие заявленным харрактеристикам, то можно попробовать на ALI.
Но я бы советовал обратить внимание на акции которые проходят перед праздниками на Amazon. На западных ресурсах, они чаще всего честные (в отличии от локальных)
Из ресурсов для выбора и проверки хочу посоветовать :
1) SSD Boss - где можно сравнить по характеристикам разные диски
2) Почитать отзывы пользователей которые уже приобрели SSD в различных магазинах (втом числе и на ALI)mysku.ru/search/topics/?q=ssd
3) Утилита для тестирования SSD дисков по аналогии с CPU-Z и GPU-Z  - SSD-Z
Вопрос: Laravel как зарегистрировать свой service?

Лучший ответ: Read The Following Manual.// app/providers/AppServiceProvider.php

use App\Services\Coupon\CreateCoupon;
use App\Services\Notification;

class AppServiceProvider
{
  public function register()
  {
    // for regular services
    $this->app->bind(CreateCoupon::class);

    // for singletons
    $this->app->singleton(Notification::class);
  }
}

// app/http/controllers/CouponController

use App\Services\Coupon\CreateCoupon;

class CouponController
{
  public function create(Request $request, CreateCoupon $service)
  {
    $service->create($request->input());
  }
}
// EDIT
Доп ответ для Станислав Почепко 
Вот я в данный момент пишу сервис. И есть такой вопрос. Если у меня сервис зависит от объекта? Я его передаю в construct в сервис. Как в данном случае его подключать в контроллере?
И насколько плохо, если внутри сервиса используется другой сервис? Это грубое нарушение слоёв?
Полная свобода действий, однако не переборщите.
1) использование вспомогательного (читай - приватного) сервиса, который нужен только этому классуnamespace App\Services\Insurance\Ally;

use App\Contracts\InsuranceProvider;

class Provider implements InsuranceProvider
{
  public function __construct()
  {
    // Api === App\Services\Insurance\Ally\Api, совпадает namespace
    // Сервис Api нужен исключительно этому провайдеру
    $this->api = new Api();
  }

  public function getTerms($invoice)
  {
    // получаем данные с api и отдаем их
    return $this->api->getTerms($invoice);
  }
}
2) использование иnamespace App\Services\FormBuilder;

// AppServiceProvider::register()
// $this->app->bind(HtmlRenderer::class);
use App\Services\Renderer\HtmlRenderer;

class Builder
{
  public function __construct(HtmlRenderer $renderer)
  {
    $this->inputFactory = new InputFactory();
    $this->renderer = $renderer;
    $this->inputs = [];
  }

  public function addInput($type, $className, $placeholder)
  {
    $this->inputs[] = $this->inputFactory->create($type, $className, $placeholder);
  }

  public function render()
  {
    return $this->renderer->render($this->inputs);
  }
}
3) service factory
// appserviceprovideruse App\Contracts\Renderer;

public function register()
{
  $this->app->register(Renderer::class, function ($params) {
    switch ($params['type']) {
      case 'html':
        return new HtmlRenderer();
      case 'xml':
        return new XmlRenderer();
    }
  });
}

// some service
use App\Contracts\Renderer;

class FormBuilder
{
   public function __construct($rendererType)
  {
    $this->renderer = app()->make(Renderer::class, ['type' => $rendererType]);
  }
}

Худший ответ: Вы неймспейс правильно указали?
Вы должны обращаться такnew App\Services\MyService()
Вопрос: В чем такое делают?

Лучший ответ: По большей части ручками с помощью js, svg, canvas.
Но есть ПО и js библиотеки, которые упрощают процесс.
Так например для svg есть редактор inkscape.paint-net.ru
Есть библиотеки:
https://d3js.org
www.hongkiat.com/blog/javascript-libraries-animate-svg
и др.
Конкретно в Вашем примере используют Greensock TweenMax и кучу плагинов к нему. Есть статья на хабре по теме:Greensock: анимация на JavaScript

Худший ответ: Обратите внимание вот на этот пен
codepen.io/nolakat/pen/mWNvdb
в установках js есть несколько интересных штук)
Вопрос: Как увеличить шрифт на мобильных устройствах?

Лучший ответ: Да, используете такие конструкции, в них переопределяете классы:@media only screen and (max-width : 767px) {
 .home {color:#fff}
}
Данный код будет работать на девайсах с шириной экрана до 767px

Худший ответ: Господи, да тут вот это нужно добавить, и все! Все работает!<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
Вопрос: Используется ли TDD/BDD в реальной разработке повсеместно?

Лучший ответ: Повсеместно - нет.
Однако при написании приложений enterprise-уровня, на мой взгляд, использование TDD/BDD обязательно.

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

Лучший ответ: Написать в поддержку Тостера.
https://toster.ru/feedback

Худший ответ: В большинстве случаев помогает нажатие кнопки "Прочитать всё" в правом верхнем углу страницы https://toster.ru/my/tracker
В данном случае она не сработала, поскольку ее работа блокировалась на стороне клиента.
Вопрос: Почему одинаковый текст при проверке оказался разным?

Лучший ответ: АВЕКМНОРСТХаеорсух
ABEKMHOPCTXaeopcyx
Видите разницу между строками? А там нет совпадающих букв, в верхней строке кириллица, в нижней - латиница.

Худший ответ: Ещё бывает, что у одной из строк в конце пробел затесался, а у другой пробела нет. Визуально это сложно увидеть.
Вопрос: Почему не работает autoprefixer в Sublime Text 3?

Лучший ответ: Установите на комп node.js

Худший ответ: Установите на комп node.js
Вопрос: Как влияют на SЕО одинаковые страницы, но с разными городами?

Лучший ответ: Если страницы информационно не отличаются (на оформление/шаблоны - роботы не смотрят): текстовая информация одинаковая или разница текстов менее 50% (на теги смотрят только когда с текстом - всё в порядке) - это считается спамом и сразу ВСЕ подобные страницы попадают под фильтр ПС.

Худший ответ: В целом одинаковые страницы - плохо. Если страницы одинаковые, но под разные города, обычно поисковики понимают разницу при условии различий контактов, возможно условий доставки и так далее и негативного эффекта не будет. Но если только название города меняется то это плохо и могут быть санкции со стороны поисковых систем.
Вопрос: Как использовать laravel passport для restfull api?

Лучший ответ: Как-то переводил для себя по правам доступа в passport https://docs.google.com/document/d/1Agg8WbiAKP8vfm...
Техническая сторона в документации описана достаточно хорошо. 
Главное определится, будет ли иметь доступ только ваше приложение или ещё сторонние.

Худший ответ: для api лучше иcиспользовать JWT https://github.com/tymondesigns/jwt-auth
Вопрос: Как объединить две сети через интерет?

Лучший ответ: .. или просто - поднять VPN

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

Лучший ответ: Похожие решения, допиливать самому придется https://codepen.io/catjuice/pen/QKjKKw?q=stack%20c...https://codepen.io/bgabot89/pen/WOzVKR?q=stack%20c... https://codepen.io/juliomoreira/pen/psfCl?q=stacke...https://codepen.io/Sladix/pen/JbmeQM?q=stacked%20s...

Худший ответ: https://jsfiddle.net/c4v1hpwc/
Осталось прикрутить сдвиг.
Вопрос: Как перейти на другую версию go?

Лучший ответ: Зачем вам go на сервере? Деплойте туда уже собранные бинарники и нет проблем.
Соберите бинарь аппликухи на go 1.3 и на go 1.6. Если с 1.6 не пойдет, просто запустите старый бинарь с 1.3.

Худший ответ: Если "на попробовать" то достаточно перебить глобальные переменные GOROOT и GOPATH.
По этому "на попробовать" можно запускать все команды так $GOROOT/bin/go version  или перебить глобальную переменную PATH добавив туда $GOROOT/bin.
Пример:export GOROOT=$HOME/lab/go/go
export GOPATH=$HOME/lab/go/gopath
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
Для отката достаточно переоткрыть терминал.
Также есть вариант через gvm
Александр Павлюк прав. Незачем держать go на сервере.
Вопрос: Почему LEMP пишется через E, если это Linux, Nginx, MySQL, PHP?

Лучший ответ: Nginx читается как Engine-X

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

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

Худший ответ: а какой смысл пихать картинки в бд?
у вас же нет аудита на семь лет назад
Вопрос: Не могу установить PostgreSQL на Windows 10?

Лучший ответ: 1) отредактировать свою переменную окружения PATH, вырезав от туда хлам;
2) Использовать для запуска полный путь: C:\Program Files\PostgreSQL\10\bin\psql
ПС. Что за молодёжь пошла, шаг влево от инструкции и всё пропало, надо уже дописывать в последний пункт - выкинуть компьютер.

Худший ответ: Попробуйте не через командную строку устанавливать (которая в Windows очень примитивна), а через свойства "моего компьютера" -> Дополнительно -> Переменные среды.
Если и там не получится установить, то отредактируйте значение переменной и выкиньте оттуда всякий мусор от программ, которые были установлены когда-то но теперь не используются, либо не так важны.
Вопрос: Как исправить долгий fullscreen на Youtube в последнем chrome?

Лучший ответ: Купите SSD диск, процессор получше, оперативку побыстрее, закидайте железом, вы что не знаете как это делается...

Худший ответ: В общем самое простое решение (сразу уточним, что проблема распространена и решаться не будет разработчиками, поскольку Гугл давно забил болт на мнение пользователей по поводу Хрома)
 - Youtube я смотрю теперь в Firefox (темная тема и другое в нем включается идентично), в остальном как и раньше использую Chrome.
Фулскрин теперь не 5-7 секунд, а 1-2 секунды в Firefox.
Вопрос: Где находится папка .ssh пользователя root?

Лучший ответ: /root/.ssh
создаёте её сами или первый раз из под рута сделайте коннект куданибудь

Худший ответ: можно самому создать эту директорию от рута mkdir /root/.ssh либо на клиенте выволнить команду ssh-copy-id root@myservername, тогда файл будет создан автоматом, и копировать вручную ничего не нужно.
но лучше всего не использовать рута, и по хорошему его нужно закрыть ( passwd -l root), но перед этим настроить sudo (/etc/sudoers). даем пользователю нужные права на нужные программы, и отменяем требование пароля при выполнении команд, например:
myuser ALL=(ALL) NOPASSWD:ALL
но лучше всего прочитать как работает sudo и настроить его под свои задачи.
Вопрос: Выбор фреймворка для админ панели?

Лучший ответ: Polymer? Не фреймворк, но зато имеет много готовых компонентов. Можно начать со статических страниц и добавлять в них свои и чужие компоненты. 
Для использования достаточно подключить только 1 js и несколько импортов html для компонентов.
Ну а так, раз уж первый angular знаком, то и писать надо на нём, чтобы было быстро. Год-два он точно поживёт, да и если использовать компонентный подход (компоненты появились в версии 1.5), то мигрировать на второй ангуляр (когда он зарелизится и обрастёт доками) не составит проблем. Тем более, инструменты для перехода есть.

Худший ответ: Не понимаю вашей логики:
1. У вас в приоритете быстрый старт, а вы рассуждаете какая технология умрёт, а какая нет.
2. У вас проекты на jQuery, вы обзорно знаете ангуляр, а руки уже тянутся к реакту и эмбер.
Получается, что в первом пункте вы сами себе усложняете жизнь, а во втором - сами себе противоречите. Почему вы считаете, что эмбер и реакт не потянут за собой кучу зависимостей ноды? Вам нужно простейшее решение для организации кода с возможностью начать одним файлом? Это Backbone.js. Однозначно и без альтернатив. Считаете, что им пользуются одни староверы? Пишите на втором ангуляре. Из приведённых вами движков проблем с интеграцией, на вскидку, не должно возникнуть разве что у бэкбона. Так что вам что ангуляр, что эмбер - один лес.
Вопрос: Как мне отсортировать кверисет?

Лучший ответ: П.С. Ответы: "добавить поле date_updated" или "переведи кверисет в лист и реверсни" - не подходят.
Решения - нет

Худший ответ: Какой запрос идёт в базу в результате?
Если не указано никакого order by - то порядок записей в результате запроса любой. В смысле действительно любой, СУБД может даже на каждый запрос возвращать данные в разном порядке и это именно то, что сказано в стандарте SQL.
Вопрос: Можно ли заменить дисплей на ноутбуке с 1366х768 на 1920х1080?

Лучший ответ: Сам менял матрицу на своём HP Probook 4530s с 1366 на 1920
Мне очень помогла разобраться в вопросе данная статья.

Худший ответ: Вы ссылаетесь на статью по замене матрицы. но там 4540s . Вы использовали наименование тех деталей которые там указывали или для 4530s есть своя специфика. У метя тоже HP Probook 4530s с 1366 планирую поменять на 1920. Если не сложно напишите какую матрицу ставили и какой 2-х канальный шлейф использовали. И какой эфект достигнут в итоге. Спасибо.
Вопрос: Что написано в коде на JS?

Лучший ответ: А где тут рекурсия? Здесь функция вызывает функцию и не более. Здесь есть цикл.
Сначала объявляется функция с параметром n. Далее создается переменная sum, она локальная внутри функции. Сначала равна 0.
Далее запускаем цикл, и задаем условия цикла, что пока переменная i, которая сначала равна 0, не станет меньше чем, или равен параметру n, надо выполнять действия, которые в фигурных скобках, а в конце каждого цикла переменную i увеличиваем на 1. В цикле берем переменную sum и к её текущему значению прибавляем значение i. После того, как цикл завершится функция возвращает sum. В итоге получаем в алерте сумму всех последовательных чисел от одного до 2, в данном примере, то есть 3.

Худший ответ: Получаем цифру в n. От этого будет зависеть "название" функции. 
Если цифра есть больше 1 то назначаем переменным какие то значения...
Вопрос: Как добраться до последнего элемента в строке?

Лучший ответ: На js можно просто offsetLeft элемента сравнивать с offsetLeft следующего, если больше, то это последний в строке.
Примерно так:
https://codepen.io/anon/pen/aPPbGV

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

Лучший ответ: РЕшил проблему с fullscreen при помощи js кода:function toggleFullScreen(elem) {
    	if ((document.fullScreenElement !== undefined && document.fullScreenElement === null) || (document.msFullscreenElement !== undefined && document.msFullscreenElement === null) || (document.mozFullScreen !== undefined && !document.mozFullScreen) || (document.webkitIsFullScreen !== undefined && !document.webkitIsFullScreen)) {
    		if (elem.requestFullScreen) {
    			elem.requestFullScreen();
    		} else if (elem.mozRequestFullScreen) {
    			elem.mozRequestFullScreen();
    		} else if (elem.webkitRequestFullScreen) {
    			elem.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
    		} else if (elem.msRequestFullscreen) {
    			elem.msRequestFullscreen();
    		}
    	} else {
    		if (document.cancelFullScreen) {
    			document.cancelFullScreen();
    		} else if (document.mozCancelFullScreen) {
    			document.mozCancelFullScreen();
    		} else if (document.webkitCancelFullScreen) {
    			document.webkitCancelFullScreen();
    		} else if (document.msExitFullscreen) {
    			document.msExitFullscreen();
    		}
    	}
    }
Но появилась другая проблема, при двойном клике по Youtube плееру, он становиться fullscreen и перекрывает мою панель, как можно этот двойной клик блокировать ?
Что бы по двойному клику не открывался fullscreen нужно для iframe в css прописать: user-select: none;
pointer-events: none;

Худший ответ: Как вариант если нужно быстро, можно попробовать Plyr, или посмотреть как там реализовано. 
В нем можно для ui использовать свой html и есть много возможностей для управления.
Вопрос: Платный сервер для Telegram Bot?

Лучший ответ: Совсем дешево, а точнее бесплатно, можно разместить на многих PaaS сервисах: Heroku, Bluemix, OpenShift и т.д.
В блоге делал их сравнение.

Худший ответ: вот тут можно найти vps менее чем за 150р в год:
lowendstock.com
Вопрос: Как добраться до ответственных лиц в Ростелеком?

Лучший ответ: Если физ лицо, то никак, им похер. Если юр.лицо, то просто уходите на другого провайдера, с вами сами свяжутся и спросят причину.

Худший ответ: Подробностей конечно не хватает, но дам ещё один совет, как привлечь внимание РТК, хотя бы ТП.
Если географические возможно, то необходимо сходит к соседу с тем же интернетом и посмотреть как работает у него. Если всё тоже самое, то собрать всех соседей и писать в ТП, обычно решают быстро подобные жалобы. 
Если у соседа всё хорошо, но можете притащить к нему ваше оборудование и проверить его причастность к проблемам, соответственно если проблема повторяется, то меняете оборудование, если нет, то так и пишите в ТП, что у соседа с моим оборудованием всё норм. 
Да трудоемко, но в случае мистики и не понимания со стороны провайдера, это даст хотя бы душевное спокойствие, что проблема не на вашей стороне и новые силы для борьбы со злом)) 
Лично из опыта, реально все случаи мистики решались заменой оборудования и вина была всегда со стороны клиента, но не всегда чисто из-за него. Например когда кабель пров обжал несколько иначе, а оборудование клиента не может этого понять. Было что скорость на порте нужно было устанавливать вручную. Было, что на микротике MRRU задействовать и т.д. и т.п.  
Ну ежели соседей нет, значит они либо на другом прове, либо вы живете в поле...
Вопрос: Почему не работает djangopackages.org?

Лучший ответ: С проектом всё в порядке. Не в порядке с РуНетом:
Используйте VPN.

Худший ответ: Сергей Горностаев прав. Я использую расширение для Хрома "frigate-cdn" и поэтому давно не замечал этой проблемы. Хотя даже с ним иногда приходится руками добавлять сайты в список "всегда ходить через прокси".
Вопрос: Можно ли использовать нейронные сети для классификации пользователей?

Лучший ответ: Можно, но ИМХО это "из пушки по воробьям". Лучше использовать некое подобие тегов, которые навешиваются на пользователя и по этим тегам выбирается подходящий продукт... ну во всяком случае я бы так сделал.
Хотя нейронные сети могут дать оценку примерной конверсии пользователя для какого то продукта. Вообщем надо экспериментировать.

Худший ответ: Логируйте:
1. Данные клиента: Акк, заголовки, сессию и т.д.
2. Переходы между страницами (цепочки URL)
3. Поведение на странице (ховеры и фокусы элементов, координаты мыши, клики, позиция станицы во ViewPort'е (scroll), ввод с клавиатуры, фокус вкладки)
Затем всё это дело сохраняете в базе и майните потом любые данные.