pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Я придумал новый гениальный способ оптимизации игр?

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

Худший ответ: Гений постольку, поскольку каким-то раком научил движок делать то, чего он не может из коробки. Но есть вопросы.
Поскольку игра изометрическая, низшие уровни детализации неактуальны. А в обычном 3D — более чем.
Изометрия обычно не настолько детальна, чтобы загрузка была нужна особенно часто — нужно что-то вроде «при приближении к подуровню грузить его».
Если движок не поддерживает фоновую подгрузку — всё будет с ней в порядке, не будет игрок испытывать тормозов?
С мультиплеером всё в порядке?
Вопрос: Какие модули к ардуино нужны для распознования объектов и построения карты?

Лучший ответ: На хабре была статья о том, как получать изображение с оптического датчика компьютерной мыши.
https://habr.com/ru/post/128972/
По идее единственным этим датчиком вполне можно было бы обойтись для прототипа, ведь мышь умеет оценивать перемещение даже по чистому листу.
Можно добавить энкодеры на колёса и применить метод Калмана для повышения точности и устойчивости определения координат. Для хранения растровой картинки с тем разрешением, с которым "видит" оптический сенсор мыши 600-1200dpi в стоковой ардуинке не хватит памяти, так что можно действительно гнать данные (смещения и картинки) на комп (или смартфон), а там уже обрабатывать и отсылать команды для моторов робота.
Можно взять ESP-cam и приколхозить линзу с подсветкой, тогда можно пробовать формировать картинку на девайсе, например на флешке. 
Эффективнее сделать штангу с подвижным сенсором и ровно едущего робота, или взять сенсор от готового сканнера. Лет 20 назад у моего друга был ручной сканнер, который нужно было возить по бумаге, чтобы отсканировать лист. По вращению колёс сканнер понимал с какой скоростью его тянут. Если вести аккуратно, получалась вполне сносная картинка, но только в случае одного прохода.
Само собой с оптическим сенсором от мыши у вас робот будет сканить А4 долго и муторно, причем в ЧБ.
Вообще проще фотать лист сверху смартфоном=).

Худший ответ: То устройство которое вы описываете называется сканер так что изобретать очередной велосипед нет смысла.
Вопрос: Как узнать, достиг ли я уровня Junior Unity Developer?

Лучший ответ: На позицию джуна этого может и хватить в некоторых командах. Но только в некоторых. Обычно должно быть неплохое теоретическое знание программирования. алгоритмы, структуры данных, то, как работает c#, сборка мусора, система типов. Человек, по примерам людей из интернета что-то собравший, можно считать, ничего и не умеет. Это заслуга разработчиков движков, создавших интуитивно понятный продукт, которым могут пользоваться даже дети. Но пользование движком не имеет никакого отношения к разработке игр, там важны совершенно другие вещи. В некоторых командах, обычно или довольно слабых или наоборот, способных и желающих вырастить себе разработчика с ~~полного нуля~~чистого листа. Джун может тупить, делать не лучшим образом, но ДОЛЖЕН уметь слушать и непрерывно работать над собой. Учиться как надо делать и не спорить. И если не получил до этого, получать теоретические знания, без которых полноценным разработчиком не стать, даже разобрав саму юнити вдоль и поперек. Обычно джун забирает время старших коллег на свое обучение. В ГК обычно джуны не нужны, там предпочтительны люди с опытом от middle, способные взять проект (Обычно, с нетривиальной механикой. Все таки, ГК не первый год существует, и игрока уже надо чем-то удивлять и цеплять. Многие ГК игры сейчас это сложнореализуемая фича в минималистичном окруженим) и выполнить его самостоятельно в короткие сроки.

Худший ответ: Как узнать, достиг ли я уровня Junior Unity Developer?
Посмотреть в трудовую или договор, затем на медиану зп на данной позиции в регионе. Если зп и должность сходятся - значит ты джун.

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

Лучший ответ: Я за intel Nuc(который ввиде флешки) или RPI

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

Берите ноут, хоть 1 рабочее устройство будет если что. С точки зрения логики и подстраховки это единственный нормальный вариант

Худший ответ: Интересно читать подобные вещи.

Работать через RDP работать совершенно не удобно, а учитывая еще не самое мощное железо это превратится в сущий ад (говорю как человек который пробовал подобные эксперименты).
Использовать Mac Mini возможно и есть смысл, но нужен постоянный поиск монитора, что так себе.

Идеальным решением будет взять мак на м1, только бук. Стоит как по мне адекватных денег и отобьет их с лихвой, например даже в минимальной комплектации. Места практически не занимает, весит тоже совсем ничего, автономность на уровне (не один ноут на винде подобное не выдаст). Кароче как по мне лучший выбор чем строить подобные велосипеды)
Вопрос: Как найти ключ по значению?

Лучший ответ: Перебором.

Худший ответ: Всем спасибо, Сергей Горностаев, MinTnt, MinTnt! Натолкнули на мысль!
Собсно Json
#!/usr/bin/env python3.9

import json
import re
from collections import Counter

with open('/home/delvin/codding/pogoda/sensorsNearby.json') as json_facta:
    fact = json.load(json_facta)
    json_facta.close()
array = fact['devices']
numkeys = Counter(i for val in array for i in val)['id']
startnum = 0
sensor = 0
unit = ''
pressure = 0

while startnum <= numkeys:
    for device in fact['devices']:
        if device['location'] == "Ленинск-Кузнецкий, Городская ул., 10":
            pressure = device['id']
            temperature = device['sensors'][-1]['value']
            temperature = round(temperature)
            unit = device['sensors'][-1]['unit']
    startnum += 1

print (f"{temperature}{unit}")
Выхлоп:
27°
Вопрос: Аудиовыход ноута в микрофон компа?

Лучший ответ: Как верно заметили, нужен не вход микрофона, а линейный вход. Скорее всего в момент подключения провода компьютер спросит у Вас, что именно подключено, нужно выбрать линейный вход (Line In). 
Кстати, сосвсем не факт, что удастся без танцев с бубном транслировать этот звук в скайп, так как, если заглянете в настройки скайпа, увидите. что там можно выбрать только одно устройство записи звука, то есть или линейный сход, или микрофон для голоса.

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

Лучший ответ: Разные товары за разную стоимость и все.

Худший ответ: Если ты планируешь продавать только валюту, то пусть будет 6 разных позиций. А если продаваться будет что-то еще, то тогда лучше сделать один товар с опциональным выбором.
Вопрос: GDPR — Как соответствовать?

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

https://hostenko.com/wpcafe/plugins/okonchatelnoe-...

Вот список плагинов:

MonsterInsights - если вы используете Google Analytics, то вы должны использовать их дополнение к ЕС.

WPForms - безусловно самый удобный плагин WordPress контактных форм. Они предлагают поля GDPR и другие функции.

Cookies Notice - популярный бесплатный плагин для добавления уведомления cookie ЕС. Интегрируется хорошо с такими плагинами, как MonsterInsights и другими.

Delete Me- бесплатный плагин, который позволяет пользователям автоматически удалять свой профиль на вашем сайте.

OptinMonster - продвинутое программное обеспечение, которое предлагает умные функции таргетинга для ускорения конверсий при соблюдении требований к GDPR.

Shared Counts. Вместо того, чтобы загружать кнопки общего доступа по умолчанию, которые добавляют файлы cookie отслеживания, этот плагин загружает статические общие кнопки при отображении количества росшариваний.

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

В подвале сайта выше поищите ссылки на шаблоны, очень Вам пригодятся. Мы пока не внедряли, но также планируем, частично реализовали (чуть больше вашего), но главное ещё впереди. Было бы хорошо обратится к юристам, но нам просто за то, что они проверку проведут сказали 5000$, но нас это очень не устроило, поэтому будем своими силами, благо сами можем на соответствие проверить и будем уповать на «авось»(если что-то пропустим).

По плагинам не подскажу, мы не на вордпрессе делали, поэтому все сами своими силами.
Вопрос: New Map удаляет повторяющиеся элементы?

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

На выходе получается что-то вроде:
const arr = [
  ['a', 1],
  ['b', 2],
  ['c', 3],
];

const map = new Map(arr);
// Map { 'a' => 1, 'b' => 2, 'c' => 3 }

По этому если вы добавите еще  один массив с НЕ уникальным ключем, он перезапишет предыдущее значение
const arr = [
  ['a', 1],
  ['b', 2],
  ['c', 3],
  ['b', 99],
];

const map = new Map(arr);
// Map { 'a' => 1, 'b' => 99, 'c' => 3 }

Худший ответ: Ну потому что вот так вот работает Map. 10005 и 10005 это ведь один и тот же ключ, вот по этому ключу сначала устанавилвается значение 470, а потом... 470. Получается что по ключу 10005 лежит значение 470. Как в объекте например. Собственно Map отличается от объекта тем, что Map может использовать любой другой объект в качестве ключа
Вопрос: Как решить проблему с установкой Windows на новом ноутбуке?

Лучший ответ: Добрый день!
Судя по описанию Windows не видит драйвер для Nvme диска.
Для продолжения установки необходимо предварительно скачать и распаковать драйвер(а) на загрузочную флешку в отдельную папку. 
Затем в процессе установки при выборе диска, на который устанавливаем Windows нажать «Загрузить драйвер» и выбрать соответствующий драйвер для диска, после чего должно корректно отображаться пространство для установки, где можно будет создать разделы и отформатировать диск.

Худший ответ: Проблема решена. Странно, но помогла установка ubuntu, которая снесла все файлы freeDos, после чего винда встала отлично, больше ничего не делал.
Вопрос: Как удалить объект с помощью условия из получаемых данных с запроса с пагинацией?

Лучший ответ: Надо использовать whereHas который будет добавлять условие group.id == 2, тогда будут получаться только студенты имеющие отношения группы с нужными условиями.

Худший ответ: $students = Student::with(["user.passport", "group.speciality"]);
        
if(\request("group_id")){ // если есть id группы
     $students = $students->whereHas("group", function ($query) { $query->where("id", \request("group_id")); });
}
        
if(\request("speciality_id")){  // если есть id специальности
     $students = $students->whereHas("group.speciality", function ($query) { $query->where("id", \request("speciality_id")); });
}
        
$students = $students->paginate(\request("page_size") ? : 10)->toArray();

return response()->json($students);
Вопрос: Не могу понять в чем проблема?

Лучший ответ: description = f"""У тебя , **{ctx.author}** вот столько балов!**{cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]} :polegar_para_cima:**"""
Вот это - трижды говнокод.
1. Не засовывай в шаблонные строки ничего сложнее одной арфиметической операции - результат абсолютно нечитаем и неконтролируем (в чем ты убедился).
Неправильно:
description = f"""У тебя , **{ctx.author}** вот столько балов!**{cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]} :polegar_para_cima:**"""
Правильно:
score = cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]
description = f"""У тебя , **{ctx.author}** вот столько балов!**{score} :polegar_para_cima:**"""
2. Никогда не формируй запросы через форматирование строк. Слишком легко словить ошибку, явную или неявную.
Неправильно:
score = cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id))
Правильно:
score = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.author.id,) )
3. Всегда проверяй, что ты получаешь из базы! Нет гарантий, что запись с указанным id и впрямь существует.
Неправильно:
score = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.author.id,) ).fetchone()[0]
description = f"""У тебя , **{ctx.author}** вот столько балов!**{score} :polegar_para_cima:**"""
Правильно:
score_row = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.author.id,) ).fetchone()
if score_row is not None:
    description = f"""У тебя , **{ctx.author}** вот столько балов!**{score_row[0]} :polegar_para_cima:**"""
else:
    # что делать, если такого юзера еще нет в базе?
    cursor.execute("INSERT INTO users (id, cash) VALUES (?, 0)", (ctx.author.id,) ) # можно его добавить
    description = f"""У тебя , **{ctx.author}** пока нет ничего! Но скоро будет!"""
4. БаЛЛов, блин.

Худший ответ: это не в тему, но чисто совет, если хостинг heroku , то выбирай базу mongodb.  
(если вопросы есть пиши в дс neredko#3131 постараюсь помочь)
Вопрос: Серый ip адрес, NAT и ftp, доступный из интернета?

Лучший ответ: 1) да
2) не совсем, скорее нет, чем да
3) как правило, провайдеры вообще не пробрасывают порты до клиентов за NATом. А /30 - это подсеть, к портам отношения не имеет
4) типо того, только этот "роутер" на домашний мало чем похож

обычно подобные проблемы решаются доп услугой "Белый IP" или "Статический IP". Технически важно для приема входящих сообщений, чтобы был одновременно и белый, и статический IP, но у провайдеров часто с терминологией путаница.

Белый IP - это когда клиент не за NAT, а сразу с внешним IP в сеть выходит
Статический IP - это когда он у тебя не меняется весь период пользования интернетом (желательное, но не обязательное условие)

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


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

Лучший ответ: Не работает потому, что работать нечему - вы не используете v-model. Документацию, судя по показанной чуши, вы вообще не читали (максимум, одним глазом глянули её пересказ каким-нибудь дегенератом на youtube'е). Это зря. Документацию читать надо. Вот прямо сейчас откройте и почитайте. Ну а пока читаете, исправим ваш говнокод.

В родительском компоненте заменить model="global" на v-model="global".

В дочернем, добавить:

model: {
  prop: 'model',
},
computed: {
  checked() {
    return this.model === this.value;
  },
},
а шаблон пусть будет такой:

<label :class="{ labelActive: checked }">
  <input type="radio" :checked="checked" @input="$emit('input', value)">
  {{ value }}
</label>

Худший ответ: <Radio name="sum" :value="200" model="global" />
model...
Вы же не строку передаёте.

<input type="radio" :v-model="model" :name="name" v-bind:value="value">
А это блин что? :v-model?

Для лучшего понимания что должно передаваться в пропах - указывайте им определённый тип.
Вопрос: Python. Как сделать интерфейс для программы без сторонних модулей и библиотек?

Лучший ответ: winapi

P.S. но в этом смысла ровно 0

Худший ответ: Разве что использовать оконные функции WinAPI, но 
1. для доступа к winapi из питона потребуется сторонний пакет типа pywin32, что противоречит условию.
2. это утомительно - гораздо утомительнее того же tkinter. 
Лезть на уровень оконного api имеет смысл только если ты хочешь сотворить что-то, что нельзя сделать стандартными фреймворками или доступными библиотеками (типа окна произвольной формы, или хитрых манипуляций чужими окнами).
Вопрос: Какие есть программы для «перемагничивания» жестких дисков?

Лучший ответ: Ох уже эти сказки. Ох уж эти сказочники

Раньше чем это произойдет, у диска откажет механическая часть.

В целом, вопрос вида "есть информация" (откуда? Научная статья, техническая статья, бабули у подъезда, лично наблюдали, как магнитный монополь сваливал гермозоны)

должен включать в себя ссылку на источники информации. А то я тоже могу рассказать, как в Африке кур доят.

Худший ответ: HDD - regenerator  старая прога , работает из под ДОСа.
HDD Regenerator
HDD Regenerator - простая в использовании программа, которая восстанавливает сбойные сектора жестких дисков при помощи специального алгоритма перемагничивания, что, по заявлениям разработчика, позволяет восстановить почти 60% поврежденных винчестеров. ... Обнаружение физических повреждений на поверхности диска.25 окт. 2016 г.
Вопрос: Как написать RewriteRule в .htaccess?

Лучший ответ: бро, я навскидку синтаксис htaccess уже не помню (но гугл 100% помнит :) - однако хочу поправить твой вопрос, и может это и окажется для тебя ответом.

Соль здесь вовсе не в том, чтобы что-то во что-то "превращалось".

Соль здесь в том, чтобы ЛЮБЫЕ (можешь задать и исключения из правила) запросы к веб-серверу (в твоем случае это Apache) перенаправлять на studentPage.php

Т.е. ты по сути говоришь веб-серверу (через запись в htaccess и RewriteRule):

- Любой запрос - отправляй на studentPage.php

И, например, к серверу приходит запрос:

site.ru/students/ivan 

но сервер, повинуясь твоим указаниям, отправляет это запрос для обработки файлом studentPage.php (я намеренно дико упрощаю, чтобы не погрязнуть в деталях)

иными словами, теперь у тебя внутри studentPage.php через переменные окружения доступно значение "site.ru/students/ivan" - и ты можешь уже его парсить и делать с ним все что хочешь.

суть именно в этом, а не в "превращениях" :)

А вообще, кодеру это знать для работы не нужно вовсе. Лучше начни сразу изучать Laravel - отдача намного быстрее будет, чем если ты начнешь копаться в том, чем потом никогда пользоваться уже не будешь. Эпоха "чистого PHP" ушла безвозвратно )))

Худший ответ: https://klondike-studio.ru/blog/snipet-for-htaccess/

https://css-tricks.com/snippets/htaccess/
Как по мне хорошая шпаргалка
Вопрос: Отваливается жесткий диск при бэкапе, куда копать?

Лучший ответ: 5 Reallocated_Sector_Ct  485
...
197 Current_Pending_Sector  16304
Ну вот и ответ. :( Кирдык самому диску, другие причины можно не искать.

Худший ответ: >cp: cannot create regular file
проверьте ФС на ошибку, убедитесь, что есть права на создание файлов в этой папке.

>fatal error -- Input/output error
нагрев южника, кабель? что в dmesg?
у вас смарт странный, будто это виртуалка
Вопрос: Как избежать преждевременной оптимизации? Или как не зная что будет потом в проекте, обрабатывать исключения?

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

Худший ответ: если мне кажется, что информация при отладке об игнорирование пригодиться 
я пишу в кетче вывод в консоль отладки. 
Если на 100 процентов уверен, что она не поможет потом при анализе, то
try{
   // действия
  return честный результат
}catch(Exception ignored){}
return значение по умолчанию
Вопрос: Нужен WI-FI роутер в розетку с поддержкой SIM-карты. Как найти?

Лучший ответ: Без ethernet легко, гуглится: wifi power plug sim типа такого
но вот требование наличия еще и ethernet все портит, слишком полярные задачи одновременно выставляешь

p.s. для себя я бы сколхозил что то сам, не красиво но однозначно по цене будет дешевле (если нужно малое количество)

Худший ответ: Есть варианты маленьких роутеров с питанием от USB порта/адаптера или POE. Наличие sim реализуется внешним usb-модемом, совместимым с роутером.
Вопрос: Какой MacBook выбрать из двух конфигураций?

Лучший ответ: Щас вроде на м1 почти всё уже работает... и намного быстрее чем на интелах

Худший ответ: Я выбрал м1, ты можешь почитать есть статья сравнение между маками https://fixit-lab.com.ua/which-macbook-should-you-buy/
Вопрос: Выключается комп на 10-15 минут, что делать?

Лучший ответ: старый бп на 350в
Это не серьезно

Худший ответ: Купите бп от thermaltek на 500+W хотя бы 80 plus bronze. Проблема решится
Вопрос: Как реализовать графический терминальный сервер?

Лучший ответ: Да, я проброшу и разделю физическую карту на ВМ
Возьмешь и разделишь? И знаешь как это сделать?

только не teamviewer, anydesk и прочий шлак.
Ты называешь проф. программы с 15 летней историей и/или десятками миллионов платных пользователей шлаком? Рили? А ты кто такой?

Худший ответ: Для себя я пользуюсь вот этим... типо стрим на основе Nvidia Shield...
как из этого сделать многопользовательское - я хз

https://github.com/moonlight-stream
Вопрос: Как вывести данные из базы данных в сообщение бота телеграм (aiogram)?

Лучший ответ: db_name и User_data - имя бд

user_id= id пользователя
@dp.message_handler(commands = "spider")
async def start(message: types.Message):
    await message.bot.send_sticker(message.from_user.id, 'CAACAgIAAxkBAAEDl79h0AJfaj1elvgQiZxxI6PsUDUz5gACGAADfoTDCO9Dmo04A4frIwQ')
    con = sqlite3.connect(db_name)
    c = con.cursor()
    select_sql="SELECT pnb FROM User_data WHERE user_id = ?" 
    # тут pnb -то что ищем, user_id - признак
    # знак вопроса не трогай
    c.execute(select_sql, (user_id,))
    results = c.fetchall()
    for row in results:

        balance= str(row[0])

    await message.bot.send_message(message.from_user.id, ' 0 уровень','\n',balance ,' монет')
А вообще тут всё просто вроде
https://pythonru.com/osnovy/sqlite-v-python
https://www.severcart.ru/blog/all/python_sqlite3/

Худший ответ: 1. Асинхронно получаешь данные из базы данных, это можно вынести в отдельный модуль или в отдельную функцию (сразу сделай чтобы функция возвращала текст или число.
2. Переменную (или функцию, зависит от того как получил) подставляешь в отсылаемый текст, форматируешь, как тебе надо.
3. Отсылаешь на клиент.
Вопрос: Как решить логическую задачу с движением робота?

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

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

Что-то типа такого

while (no wall_from_right) {
  move_right;
}
while (no wall_from_left or no wall_from_up) {
  if (no wall_from_up) {
   move_up;
   while (no wall_from_right)
     move_right;
  } else {
   move_left;
  }
}
fill;

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

Можете реализовать функцию Иди_вправо_до_упора. В нее можно вынести повторяющийся цикл с шажками вправо.

Худший ответ: я бы посмотрел в сторону
https://github.com/pystage/pystage
Вопрос: Что делать, если заказчик хочет делать крупный сайт агрегатор на Тильде?

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

у меня со всеми клиентами в договоре есть пункт "все изыскания по их прихоти - за их счёт".

Худший ответ: Вежливо отказать. Сослаться на занятость. Через некоторое время он наберётся опыта и обратится к вам.