Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как написать код в php чтобы он определял цвет светофора в конкретное время используя инпуты?

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

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

Дерзайте.

Худший ответ:
Если списать фразу "... с начала каждого часа..." на неточность изложения задачи, то, предполагаю, решение такое
$inputTime = strtotime('22.01.1970 00:02:55'); // green
$inputTime = strtotime('22.01.1970 00:03:15'); // yellow
$inputTime = strtotime('22.01.1970 00:03:30'); // red


$baseTime = strtotime('22.01.1970 00:00');
$cycleDuration = 180 + 20 + 120;
$x = ($inputTime - $baseTime) % $cycleDuration;
$color = null;

if ($x <= 180) {
    $color = 'green';
} elseif ($x <= 200) {
    $color = 'yellow';
} else {
    $color = 'red';
}

var_dump($color);
Вопрос: Выбор ноутбука под Фотошоп?

Лучший ответ:
Я бы выбрал для себя Lenovo IdeaPad Gaming 3 15ARH05. В дальнейшем докупил +8гиг оперативки( если конечно в него можно еще впихнуть +8) и поменял ССД на 500Гб. Это лично мое мнение.

Худший ответ:
Однозначно 4600H, там банально кэши всех уровней больше. Встроенная Вега на уровне gtx1030, дополнительная 1650 будет большим плюсом, в том числе и для фотошопа. Для карт памяти я купил кард-ридер в виде флешки, так что это вообще не повод для размышлений.
Вопрос: Как вставить переменную в нужную строку БД?

Лучший ответ:
Вдруг у кого будет такой же вопрос:

cursor.execute('UPDATE users SET numbers=? WHERE emails=?', (user_number, email))

Худший ответ:
С помощью update.
Примеры можно посмотреть здесь, в соответствующем разделе
Вопрос: Где взять датасет (для обучения модели) с анкетами из службы знакомств, но без персональных данных?

Лучший ответ:
Вот тут датасеты разные есть https://datasetsearch.research.google.com/

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

Лучший ответ:
Никак. Ваш роутер на это не способен.

В Микротиках:
Tools->Packet Sniffer, настраивается хост, на который будет зеркалироваться нужный траффик. На приёмном хосте (на компе) запускается Wireshark и слушается UDP порт 37008, в филтрах Wireshark указываете ip.src интересующего вас клиента, добавляете фильтр HTTP - вуаля, вы видите весь траффик. 
Подробнее - гуглите Mikrotik Packet Sniffer.

Второй вариант - сделать роутером ваш компьютер: Linux в качестве прозрачного прокси, настраивается iptables, траффик собираете на компе, а комп берет интернет с роутера. Конечно же в комп нужно будет воткнуть WiFi свисток, и с него организовать AP, но я считаю, вам подойдет только первый вариант. Второй - это уже слишком для вас, надо шарить в линуксах.

Худший ответ:
Добрый день, какую цель вы преследуете сбором этих данных ?
Вопрос: Random в питоне не выполняет свою функцию, используясь через def,как исправить?

Лучший ответ:
Все он меняет...
>>> import random
>>> def test():
...     return random.randint(0, 10)
...
>>> test()
9
>>> test()
0
>>> test()
0
>>> test()
1
>>> test()
3
>>> test()
9
>>> test()
7
>>>

Худший ответ:
Тут есть два варианта, на сколько я помню. 
1. Использовать randint вместо random.randint:
randint(one, two)
2. Добавлять каждый раз новый сид генерации рандомных чисел, не думаю что им кто-то пользуется.:
import random
import time
random.seed(time.clock())
print(random.randint(2,12))
Вопрос: Как исправить работу тачпада?

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

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

Лучший ответ:
Мне кажется, прям "учить" не нужно. Главное уметь читать листинги и понимать что происходить.
В общем случае сопоставить ассемблер с сишкой не получится.

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

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

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

Лучший ответ:
Array
  .from(arr.reduce((acc, n) => acc.set(n, (acc.get(n) ?? 0) + 1), new Map))
  .reduce((max, n) => max[1] > n[1] ? max : n, [ , 0 ])
  .shift()
или

Object
  .entries(arr.reduce((acc, n) => (acc[n] = (acc[n] ?? 0) + 1, acc), {}))
  .reduce((acc, n) => (acc[n[1]] = +n[0], acc), [])
  .pop()

Худший ответ:
const arr = [1,2,2,2,4];

function occurrence(array){
   return array.sort((a,b) => 
      array.filter(v => v===a).length - array.filter(v => v===b).length
   ).pop();
}

occurrence(arr); //Вернет 2
Вопрос: Как сделать tar архив без мусорных путей?

Лучший ответ:
Тьфу! Нашел!
tar -C /tmp/1/2/3/4/5/6/7/8/ -czvpf /mnt/archive.tar.gz .
Так он всю файловую структуру ниже 8/ воспринимает как от корня. Т.е. то что требовалось

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

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

<canvas width="1000px" height="1000px"></canvas>

const canvas = document.querySelector('canvas')
const ctx = canvas.getContext('2d');

const drawRect = (color, x, y, width, height) => {
  ctx.fillStyle = color;
  ctx.fillRect(x, y, width, height);
  return {
    color, x, y, width, height
  }
}
   
drawRect('blue', 50, 50, 20, 20)
drawRect('black', 150, 150, 50, 150)

const drawLine = (x1,y1,x2,y2) => {
  ctx.lineWidth = '3';
  ctx.strokeStyle = 'violet';
  ctx.beginPath();
  ctx.moveTo(x1,y1);
  ctx.lineTo(x2,y2);
  ctx.closePath();
  ctx.stroke();
}


canvas.addEventListener('click', (e) => {
  canvas.width += 0;
   
  const npc = drawRect('blue', 50, 50, 20, 20)
  const house = drawRect('black', 150, 150, 50, 150)
  drawRect('green', e.clientX, e.clientY, 20, 20)
  
  const x1 = npc.x, y1 = npc.y, x2 = e.clientX, y2 = e.clientY;

  const points = [];
  for(let i = 0.0; i <= 1; i = i+0.01){
    const gg = getPositionAlongTheLine(x1,y1,x2,y2, i);
    drawRect('aqua' ,gg.x, gg.y, 2 , 2)
    points.push({x: gg.x, y: gg.y, width: 10, height: 10})
  }
  
  for(let i = 0; i < points.length; i++){
    if(collides({...points[i], width: 2, height: 2}, house)){
      console.log('есть препятствие')
      return;
    }
  }
  drawLine(x1, y1, x2, y2)
})
  
  // отдает координаты равные проценту расстояния: percentage максимум = 1 
  function getPositionAlongTheLine(x1, y1, x2, y2, percentage) {
    return {x : x1 * (1.0 - percentage) + x2 * percentage, y : y1 * (1.0 - percentage) + y2 * percentage};
  }
 

  function collides(a,b){
      return a.x < b.x + b.width &&
             a.x + a.width > b.x &&
             a.y < b.y + b.height &&
             a.y + a.height > b.y;
  }

Я там наговнокодил немного, но это лишь потому что не хочу тебе давать лёгких решений, но если сможешь разобраться в коде - то решишь свою проблему, если этот вариант тебя устроит.

Синий - нпс
Черный - препятствие
Зеленый - игрок

Если нпс видит игрока - появляется линия между нпс и игроком.

Игрок на карте появляется при нажатии на левую кнопку мыши.

Худший ответ:
Точно так же как и любую другую задачу: спроектировать и реализовать.

Составить задачу
Сделать декомпозицию задачи на более маленькие подзадачи в несколько итераций до самых простых
Взять маленькую задачу и решить её
Выполнять пункт 3 до тех пор, пока есть задачи
Profit
Вопрос: На какой из компонентов компьютера воздействует хакинг?

Лучший ответ:
имхо очень размазанный в своей сути вопрос... :)
я так понимаю под аппаратным хакингом ты понимаешь Row hammer и иже с ним ??
атака может происходить в любом месте, где найдется подходящая "дырка" выбор и реализация зависит от автора хакинга.
но все таки, большая часть атак идет на программные компоненты. и бекдор встраивают в программный код операционки или ее компонентов.

Худший ответ:
1. Физический уровень уничтожение железа
2. Програмный  уровень взаимодействие с системой
3. Программный на уровне пользователя, тырят все пароли и явки
Вопрос: Как передать данные без кавычек в execute() безопасно, чтобы предотвратить SQL-инъекции (PyMySql)?

Лучший ответ:
https://stackoverflow.com/questions/54113887/place...

P.S.: Я бы проверял через "белый список" допустимые таблицы...независимо от экранирования в запросе...

Худший ответ:
sql escape string для твоего языка программирования

например для php
https://www.php.net/manual/en/function.mysql-real-...

ну и вообще можно список конкретных таблиц в коде указывать, а через параметр их выбирать из этого списка, чтобы в лишние таблицы никто не лазил.
Вопрос: Событие change. Почему счетчик работает не корректно?

Лучший ответ:
Потому что вы добавляете в selectedContactValues числа, а ищете в нём строку.
indexOf использует строгое сравнение, ничего не находит и, соответственно, выдаёт -1.
splice, в свою очередь, получив -1 удаляет первый с конца элемент массива.

Худший ответ:
Нужно добавить специальную функцию обертку, чтобы изолировать переменные.
item.addEventListener('change', (function(item, i) // функция обертка для функции обработчика, содержит переменные, которые нужно изолировать 
{

return function() { //возврат функции-обработчика для лисенера
     if(item.checked) {
         selectedContactValues.push(parseInt(item.dataset.price));
         countElements[i].value = 1;
     } else {
         selectedContactValues.splice(selectedContactValues.indexOf(item.dataset.price),1);
         countElements[i].value = 0;
     }
        
        resultElement.textContent =  sumArray(selectedContactValues);
    }; // конец функции обработчика событий, переменные которые нужно пропустить через замыкание

})(item, i) // конец функции обертки
);
ПС: Возможно, тут нужно клонировать объект item:
})(JSON.parse(JSON.stringify(item)), i) // конец функции обертки
Данный способ склонирует только структуру и данные объекта без ссылок на функции и ссылок на DOM.
ППС: Или брать arr[i] внутри обертки в качестве item, тогда изолировать придется только i:
item.addEventListener('change', (function(i) // функция обертка для функции обработчика, содержит переменные, которые нужно изолировать 
{

return function() { //возврат функции-обработчика для лисенера
let item = arr[i]; // берем item из внешнего массива arr, но по изолированному индексу i     
if(item.checked) {
         selectedContactValues.push(parseInt(item.dataset.price));
         countElements[i].value = 1;
     } else {
         selectedContactValues.splice(selectedContactValues.indexOf(item.dataset.price),1);
         countElements[i].value = 0;
     }
        
        resultElement.textContent =  sumArray(selectedContactValues);
    }; // конец функции обработчика событий, переменные которые нужно пропустить через замыкание

})(i) // конец функции обертки
);
Вопрос: Почему bat выводит в wmic неправильный месяц?

Лучший ответ:
Потому что присвоилось значение из последней отфильтрованной findstrом записи: WeekInMonth=2
Вы можете в вызове wmic отфильтровать столбцы, которые он будет возвращать:
wmic path win32_utctime get Month /format:list

На счет часов - тут все просто вы вызываете win32_utctime - она возвращает время в UTC, как это ни странно. Очевидно, в винде выставлен московский часовой пояс - +3 к UTC.
Используйте win32_localtime вместо win32_utctime.

Худший ответ:
win32_utctime 
посмотри сколько сейчас времени по UTC и у вас (насколько я понимаю вы живете по московскому времени
алсо, для дебага - выведите себе результат 
wmic path win32_utctime get /format:list и внимательно просмотрите.
Сейчас вторая неделя месяца и именно эта строка встречается последней (а не сам month) - поэтому ваши фильтры выцепляют именно ее.

А вообще закопайте уже стюардессу и пишите на powershell, если вы, конечно, не занимаетесь арехологией. Пометка: используйте Windows Powershell а не последний доступный Posh 7. Работа с wmi есть только в windows powershell, из более новых версий она выпилена в угоду кросплатформенности
Вопрос: Возможно ли выдрать корректные драйвера из установленной win10 для установки на чистую win10?

Лучший ответ:
Подключить старый ssd как внешний диск и настроить новую ОС на установку драйверов только с внешенго устройства (для удобства можно отключить интернет, чтоб сам ничего не качал).

Худший ответ:
В работающей Windows резервную копию драйверов можно сделать средствами RAPR
Вопрос: Можно ли выполнять работу без найма?

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

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

Лучший ответ:
Ошибка в недрах стандартной библиотеки. Вы в вашей программе что-то не так делаете и она падает. Это частая проблема в C/C++, можно допустить такие ошибки, что программа упадет. 

Вы уже открыли вашу программу в дебаггере. В правом нижнем углу вы видите стек. Первые 3 функции - это в недрах библиотеки. Вам тут ничего не понятно, поднимайтесь вверх. Ткните в четвертую строчку - там где Main().

Увидите, что ошибка происходит на строчке:
cout << morze.find( text[i] )->second <<"  ";

Проблема возникает при попытке обратиться к second у возвращенного значения. Но почему? Читайте ошибку: "cannot dereference end map/set iterator".

Т.е. find возвращает end() итератор. Действительно, посмотрите в документацию - map вернет end() если искомого ключа в нем нет.

Иправить ошибку просто - исправьте ваш код. Сначала присвойте переменной возвращенный из find итератор, и потом проверяйте, а не end() ли он. И только в противном случае выводите.

Я подозреваю, что символом оказался пробел. Пробела в вашем мапе morze нет, вот все и падает.

Худший ответ:
Читаем документацию: что возвращает std::map.find(). И что - может вернуть.
Вопрос: Артефакты в FurMark — это 100% неисправность видеокарты?

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

Худший ответ:
Да это однозначно проблемы.

Нет, не обязательно железо будет умирать, у меня дискретная видеокарта (древняя) так умирала больше года (позже я ее отдал другу тогда, она и у него еще долго работала)

Если температура в пределах нормы (не выше 60 градусов) но есть артефакты то это проблемы с чипами памяти либо с самим процессором (типичная поломка - отслоившийся припой внутри - это говорят можно починить специальным прогревом)
Вопрос: Что будет более производительным?

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

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

- зачем делать клон? можно сделать набор окружения из кусков, которые правильно совмещаются и просто ставить их вперед, по мере продвижения к персонажу (да лучше чтоб центральная точка с персом и камерой не двигалась, двигались блоки окружения на камеру, позволит избежать проблем с точностью float за 10000f)

- много объектов лучше не ставить, сделать столько сколько удобно для раннего осмысления обстановки игроком, отсутствие дальних блоков просто скрыть туманом
Вопрос: Кастомная аутентикация Linux?

Лучший ответ:
Использовать модуль pam_exec для вызова скрипта.

Худший ответ:
Через PAM, конечно же. После сработки pam_unix ставите свой модуль pam_mycoolmodule, который делает действия, ставите required если интересно чтобы отработали следующие модули в цепочке (но при этом все равно будет отказ) или requisite, если нужно, чтобы в случае ошибки отказ возвращался сразу.
Модуль лучше писать самому, а не через pam_exec, особенно если он с паролями работать будет.
Вопрос: Как сделать так чтобы клиента, при нажатии на кнопку бота в телеграм перекидывало в личку с определенным человеком?

Лучший ответ:
Через урл можно, но только если у целевого юзера заполнен username

Худший ответ:
Сделай инлайн кнопку и передай в ней url страницы. И при нажатии тебя отправит по этой ссылке
btn = types.InlineKeyboardButton(text='Нажми на меня', url='https://t.me/kasatkin_da')
Вопрос: При смене IP адреса на ПК пропадает интернет?

Лучший ответ:
Привязки по MAC случайно нет на роутере?

Худший ответ:
В общем, вопрос уже решил сам. В роутере в ARP стояла привязка IP по mac адресу. Mac сменился, соответственно корректной работы тут не было. Отвязал IP от mac, и всё заработало :-)
Вопрос: Можно ли восстановить бекап MBR на GPT?

Лучший ответ:
1. Следовало уточнить в вопросе, что резервное копирование делаете tar'ом, потому что есть сто других способов.
2. Да, можно; tar ничего не знает о способах разметки диска, ему пофиг, он работает на более высоком уровне - с файловой системой, а не с блочным устройством. Так что до восстановления tar'ом раздел должен уже иметь файловую систему (т.е. должен быть отформатирован, если этот раздел был создан заново утилитой разметки диска).
3. Что там насчёт загрузочного раздела? О нём нужно думать отдельно.

Худший ответ:
1. Следовало уточнить в вопросе, что резервное копирование делаете tar'ом, потому что есть сто других способов.
2. Да, можно; tar ничего не знает о способах разметки диска, ему пофиг, он работает на более высоком уровне - с файловой системой, а не с блочным устройством. Так что до восстановления tar'ом раздел должен уже иметь файловую систему (т.е. должен быть отформатирован, если этот раздел был создан заново утилитой разметки диска).
3. Что там насчёт загрузочного раздела? О нём нужно думать отдельно.
Вопрос: Чем отличается веб-разработчик от фронтенд разработчика?

Лучший ответ:
Веб-разработчиком могут называть и бэкендера, и фуллстака, и фронта.
А фронтендер - это фронтендер.

Худший ответ:
Фронтенд-разработчик - это подвид web-разработчика.
Вопрос: Чем делать резервную копию Windows?

Лучший ответ:
Важные файлы на яндекс-диске.
Рабочие проекты на гитхабе/гитлабе.
А саму систему нафига бэкапить? Она у меня на днях в первый раз за 8 лет рухнула. Ну накатил по новой и фиг с ней.

Худший ответ:
Руководство.
Вопрос: Как правильно переводится fade in и fade out?

Лучший ответ:
Скрыть/показать

Худший ответ:
я для себя это перевёл как in - внутри (значит войти в скрытие), а out - снаружи (значит выйти из скрытия). имхо
Вопрос: Как синхронизировать проект с удалённым репозиторием?

Лучший ответ:
Ох уж эти трудности перевода)) remote обычно переводят на русский как удалённый. Но что если я захочу удалить remote? Удалить удалённый?
Поэтому лучше говорить «внешний», чтобы не путаться. Мы работаем с локальным репозиторием, а все остальные по отношению к нему будут внешними. В Git нет централизации, все репозитории равноправны и могут обмениваться информацией в произвольных направлениях.

Итак: у нас есть два внешних репозитория и хочется их синхронизировать? Без проблем. 
Можно использовать локальный компьютер как вспомогательный.

Я сделал
git init
git remote add origin ....

Начало уже нелогичное. Ты же говоришь что уже выкачал репозиторий с сервера?
Т. е. выполнил git clone <server1>
Это уже создало копию репозитория и init не нужен. А ещё это автоматически создало ссылку origin тоже. 

Дальше можно поменять адрес origin на второй сервер
git remote set-url origin <server2>

И сразу увидим в git status есть ли отличия. 
Хотя нет, вру. Надо после смены адреса скачать к себе заново внешние ветки командой
git fetch
Только тогда будет что сравнивать. 

Примерно так. Это первое что пришло в голову и пожалуй грубовато. Можно придумать более аккуратную схему.

Я бы лучше не удалял старый remote, а добавил новый. То что ты «скачал с сервера» пусть так и останется как origin. А «удалённый» репозиторий обозначим как upstream
git remote add upstream <server2>
git fetch upstream
Тогда мы сможем сравнивать любые ветки и синхронизировать.

Худший ответ:
Клонируй проект из удалённого репозитория к себе.
В эту же директорию скачай проект с сервера с заменой файлов.
Введи git status, чтобы посмотреть, что изменилось и прими решение, что делать дальше.
Вопрос: Как зарядить планшет без USB от powerbank?

Лучший ответ:
"Usb 5 В кабель питания совместимый с Lenovo MIIX 310-10ICR планшет" https://www.ebay.com/itm/372956961224

Худший ответ:
Возьми гибкий кабель достаточно большого сечения. Найди в радиодеталях такой разъём, и разъём USB type A
Спаяй. Распиновку USB нагуглишь, а у планшетного разъёма плюс внутри - не перепутай полярность. 
Готово.
Только нужен PowerBank способный выдать 4 ампера при 5 вольтах, судя по написанному на блоке питания.
Вопрос: Беспроводные оптические линии связи. Какие слова гуглить чтобы узнать о них подробне?

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

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

Худший ответ:
Так беспроводные или оптические?
Вопрос: Зачем нужны «ссылочные» методы и почему они не удовлетворяют интерфейсам?

Лучший ответ:
*Human и Human это два абсолютно разных типа данных.
Значит и реализацию для интерфейсов для каждого типа надо делать отдельно.

*Human - указатель на значение типа Human.

Худший ответ:
func (h *Human) Speak() {

}
Если глянуть на внутренности языка, то метод это по сути обычная функция, у которой первым параметром является ресивер (тот объект, у которого вызывается метод). То есть, компилятор этот код превратит в
func Speak(h *Human) {

}
Соответственно, при вызове метода в случае *Human будет передача структуры по указателю, а в случае Human, по значению, со всеми вытекающими.

Что касается ошибки про несоответствие интерфейсу, то тут надо учесть, что если у структуры определены методы через указатель, то и соответствовать интерфейсу будет указатель на эту структуру: https://go.dev/play/p/o7EsGmeYSRS
Если же без указателя, то соответствовать интерфейсу будет сама структура: https://go.dev/play/p/oTsXP4DXaMJ
Но оба одновременно определить не получится.
Вопрос: Хочу попробовать себя в менторинге, где искать менти?

Лучший ответ:
Менторы не задают вопросов. Они на них отвечают.

Худший ответ:
Доброго времени суток.  Готов быть менти. А оплата  в стиле а ля Deadpool принимается.