pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Хранение значений массива в БД?

Лучший ответ: Это задание, а не вопрос.

Худший ответ: Вот к какому решению я пришел.
$pdo = new PDO ( "mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPassword );
    $stmt = $pdo->prepare('INSERT INTO ТАБЛИЦА ( content, author ) VALUE ( :content, :author )');

foreach ($result as $msg ) {
    $stmt->bindValue(':content', $msg["content"]);
    $stmt->bindValue(':author', $msg["author"]["username"]);
    $result = $stmt->execute();
}

Хотел бы услышать мнение по поводу кода от более знающий людей. 
Спасибо всем, кто обратил внимание на мой вопрос.
Вопрос: Как спарсить текст на странице сгенерированный js с помощью JS или PHP?

Лучший ответ: https://www.deepl.com/docs-api 
https://www.deepl.com/docs-api/translating-text/re...
не мучайся, для таких вещей есть апи

Худший ответ: А их request (тот что во вкладке Network) - напрямую дернуть не пробовали ? 
Где то стоит защита от этого, гдето нет ... попробуйте
Вопрос: Какой RDP клиент для Windows со списком и папками/категориями вы знаете?

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

Худший ответ: Кто нибудь может подсказать какой нибудь бесплатный клиент для RDP со списками и папками/категориями?Я использую KeePass.
Было бы хорошо чтобы там и SSH клиент И это оттуда же.

А так - RDCMan вполне неплох.
В общем зависит от задач - если таскать с собой надо, то первое удобнее.
Вопрос: Здравствуйте. Как настроить домашний сервер на раздачу интернета по проводу на роутер?

Лучший ответ: Можно. Настройте на сервере nat и dhcp + dns
Например можно использовать пакет dnsmasq он простенький
Роутер - отключаете dhcp на нем, ставите адрес локалки из подсети сервера. Все

На сервере должно быть 2 сет карточки конечно

Худший ответ: Можно ли интернет подключить напрямую в сервер
Можно, только зачем? Схема "роутер принимает провод от провайдера + файрволл/NAT а за ним сервер, на котором сервисы" - она работает надежнее, потому что роутер (железку) убить труднее, чем сервер.
Кроме того, выставляя сервер в тырнет, Вам придется подымать там iptables с нормальной защитой. Это конечно имеет смысл, если роутер гумно и новый покупать не хочется.
Вопрос: Как найти работу без опыта?

Лучший ответ: AVG комитов в репах в районе 4-5.
Куча мусора в профиле, какие-то рандом мемы, цитаты, юзлес борды статистики.

Единственный годный бадж для профиля - бадж репы, которые на влазят в основной блок фаворит проектов.
Активности в гитхабе мало.

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

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

Это только так, на вид.
Открыл первый файл с кодом, там any.
Местами глупости написаны:


Папка .idea в репе, весь код в корне, папки src нет.
Дальше смотреть лень.

Общая картина больше тянет на совсем зеленого стажера, побольше опыта нужно.

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

Лучший ответ: Спросите у знакомого

Худший ответ: Адрес на который будут отправлены данные формы. И судя по всему, по этому адресу должен быть доступен какой-то работающий сервер))
Вопрос: Что будет с видеокартой, если заблокировать её вентилятор?

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

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

Лучший ответ: Достаточно HTML + CSS.
snippet

Худший ответ: Предлагаю Angular там есть компонент
Вопрос: Как сис.админу стать devops?

Лучший ответ: Всё очень просто
https://roadmap.sh/devops

Худший ответ: А как вы впервые стали сисадмином, вы же тогда не были сисадмином?

Вот откуда такой вопрос?
Неужели сложно поискать вакансии, почитать в них требования?
Вопрос: Как надежно хранить фото и видео?

Лучший ответ: для "крайне холодного" хранения посоветую M-disc
запилить на m-disc блюреи и на дальнюю полочку - 200 лет пролежат.

если пилить на обычные диски - раз в пять лет понадобится их обновлять. раз в десять лет для "хороших".

Худший ответ: либо арендуйте сервак и храните всё там + бэкапы к себе

либо собирайте NAS на 2х дисках в рейд + бэкап раз в неделю(допустим) на внешний диск...

для бэкапа можно использовать rclone , работает в винде\линукс, умеет много чего. удобная утилита  сделать batник и закинуть его в планировщик)

на NAS можно поставить тот же nextcloud - и будет Вам полный аналог гугл облака ))
ну или OpenMediavault - если надо чисто хранение + локальные подключения
Вопрос: Можно ли подключить SSD M.2 на горячую?

Лучший ответ: Да, можно. M2 - это PCI, а он предусматривает "горячее подключение".
Поэтому на разъёме M2 контакты разной длины, приглядитесь.

Худший ответ: Насколько я знаю - нельзя
Вопрос: AttributeError: 'str' object has no attribute 'sleep' ошибка. Как решить?

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

Худший ответ: Чтобы решить, надо думать что делаете.

import time - импортируете модуль time в переменную time
time = input("Сейчас день или ночь?: ") - выкидываете старое значение переменной time и заменяете его строкой. Прощай, модуль.
time.sleep(0.5) - пытаетесь обратиться в функции sleep() модуля в переменной time, но его там уже нет, там теперь строка

Тут дело не в питоне, а в элементарной логике.
Вопрос: В чем ошибка в docker compose?

Лучший ответ: Volumes не правильно написан

Худший ответ: Надо волюмс указывать через :
Указывая 2 значения: локальную и контейнерную папку
У вас указана одна
volumes
Вопрос: Насколько важна dpi мыши для дизайна и моделирования?

Лучший ответ: Устройства ввода - это комфорт пользователя.
Это может быть важно ДЛЯ ВАС (если вы конечно способны уловить разницу между высоким и низким dpi мышки).
"Дизайн и моделирование" - это продукт головы, а не рук.

Худший ответ: 1000dpi вроде как везде достаточно
Вопрос: Как узнать сколько элементов и их значений есть в словаре?

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

dict = {'А': [173, 70], 'Б': 12345, 'С': 'Привет семье', 'D':{'D1':'Aу','D2':'[1,2,3]','D3':321}}
for itm in dict.items():
    print(itm)

Результат:
('А', [173, 70])
('Б', 12345)
('С', 'Привет семье')
('D', {'D1': 'Aу', 'D2': '[1,2,3]', 'D3': 321})

Рекомендую все-таки учить Python по книжкам, а не по видосикам.

Худший ответ: Если "у меня есть словарь" то абсолютно непонятно, как вы его умудрились создать, не понимая, как со словарем работать?  Просто где-то скопировали готовый код, что-ли?

dict = {'А': [173, 70], 'Б': 12345, 'С': 'Привет семье', 'D':{'D1':'Aу','D2':'[1,2,3]','D3':321}}
for itm in dict.items():
    print(itm)

Результат:
('А', [173, 70])
('Б', 12345)
('С', 'Привет семье')
('D', {'D1': 'Aу', 'D2': '[1,2,3]', 'D3': 321})

Рекомендую все-таки учить Python по книжкам, а не по видосикам.
Вопрос: Есть ли решение(расширение, сервис) для сбора(парсинга) новостей из HTML, хранение, и отображение?

Лучший ответ: https://github.com/mozilla/readability

Есть множество альтернативных реализаций этого алгоритма на других языках.

Худший ответ: Что значит сервис?
Чтобы что-то парсить нужно написать парсер под конкретный ресурс.

Под некоторые ресурсы есть парсеры - и владельцы этих парсеров продают собираемую ими информацию.
Вопрос: Регистратор/ресселер взял деньги за продление домена а домен не продлил. что делать?

Лучший ответ: в суд!

Особенно если у тебя не только 'моральные страдания' но и 'финансовые потери'
Собирай все возможные документы, лицензионные соглашения с регистратором, документы об оплате и т.п.

и такие вещи лучше с юристом обсуждать

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

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

Лучший ответ: Если нет хостинга - Wix (самый простой), Blogger (сделан гуглом), если хостинг есть - WordPress (номер один в качестве блога).

Худший ответ: Есть множество генераторов статических сайтов. Например, Jekyll
Вопрос: Как fps влияет на игру?

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

Очень заметна разница между, например, 25 и 30 фпс, на примере разлетающихся при взрыве предметов (личное наблюдение)

Худший ответ: Да, основные кадры остаются, но появление зависит от того в какой момент произойдёт смена кадра.
Пример:
В самом худшем случае, вы появляетесь друг у друга в точке видимости сразу после отрисовки кадра.
следовательно у твоего друга пройдёт 1/90 секунды пока ты появишься на мониторе, а у тебя пройдёт 1/30 секунды пока у тебя отобразится друг. Тоесть разница картинки может быть от 0 до 0.02 с
Но в реале персонажи не появляются мгновенно, они постепенно появляются из за преграды. То есть в реале картинка на эране при 90 фпс будет чуть более точно отображать положение движущегося игрока, на несколько пикселей точнее, на сколько там должна сместиться картинка за 0.02с
Вопрос: Как прописать классы в php коде?

Лучший ответ: Объясняем на простом примере, как в программировании можно использовать логическое мышление.
$description = "<div id='details-2' class='col-12 col-xl-4 col-lg-12 mb-xl-5 mb-5'><div class='d-flex b-skills'><div class='height:70px;'><div class='text-bold'>";
echo $description,"\n";
echo addslashes($description);
Берём наше многострадальное слово дескрипшен и выводим как есть. И - о чудо! - все кавычки на месте.
После этого добавляем функцию добавления обратных слешей. И видим, что они добавились к кавычкам.
Из чего мы можем сделать логический вывод о том, что между созданием многострадальной переменной дескрипшен и выводом её содержимого на экран, присутствует некий говнокод, который по какой-то неведомой причине добавляет к ней обратные слеши.

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

Худший ответ: Возьми в кавычки все классы в одинарные или двойные (нужно заэкранировать)
if (isset($_POST['currentTier']) && strpos($_GET['type'], 'placements')===false) $description .= "<div id=details-2 class='col-12 col-xl-4 col-lg-12 mb-xl-5 mb-5'><div class='d-flex b-skills'><div class='height:70px;'><div class='text-bold'>Текущая лига:</div> <div class='text-primary'> ".$tiers[$_POST['currentTier']]."</div></div></div></div></br>";
Вопрос: Существует ли сервис для создание опроса, какой вариант UI решение более функционален\красив?

Лучший ответ: Для опросов есть Яндекс взгляд.
Ещё есть a/b- тестирование, когда ты разделяешь просветителей сайта и показываешь разные варианты ui, а потом оцениваешь целевые показатели

Худший ответ: Самое простое и удобное - опросы от google https://habr.com/ru/post/498624/
Вопрос: Какой IP у исходящих PHP запросов?

Лучший ответ: Если ты нычешься за cloudflare но делаешь запросы на другие api курлом и прочей инструментарией то палишь ip своего сервера/vds/хостинга

Худший ответ: Из консоли узнать "свой" айпи можно так:
wget https://ipinfo.io -qO-
Если они динамические, то конечно, каждый раз слать новые в техподдержку api нет смысла.
Вопрос: Нормально ли учить Django более полугода?

Лучший ответ: Нормально

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

Лучший ответ: Вынесите "ресурсоемкую задачу" в временную таблицу.

Из нее посчитайте count и положите в скалярную переменную

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

Худший ответ: Для MySQL 8
WITH `tmp` AS (
  ##ресурсоемкая задача
)
SELECT `tmp`.*, `s`.`count`
  FROM `tmp`
  JOIN (
    SELECT COUNT(*)
      FROM `tmp`
  ) AS `s`
LIMIT 150
Вопрос: Мало памяти на компьютере. Что делать?

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

Худший ответ: Чего я только не делал с таким нетбуком, сколько ОС не ставил. В итоге пришёл к обрезанному и почищенному Windows 7 от Овгорского, оптимизировал его (есть несколько хороших статей на хабре), отключил лишние службы и прочую ерунду. Теперь нетбук работает как часы.

p.s.
Ещё рекомендую установить старую версию оперы.
Вопрос: Каким образом можно сделать ровную табуляцию в строке?

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

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

Очень жаль.

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

Вот, например, у вас есть подзадача:
мне нужно как-то посчитать количество символов во всех строках
Отлично, ведь это отдельная подзадача, которую можно изолировать и просто решить, абстрагируясь от связей с другими подзадачами (ведь это ещё успеется):
text.split('\n').forEach(
  (s,i)=>console.log('Символов в строка №'+(i+1)+': '+s.length)
);
Вероятно, вам кажется, что это не совсем то, что вам нужно. Всё верно, потому что это просто пример того, как легко можно решить отдельную простую подзадачу. А учитывая все связи, это решение придётся немного модифицировать под ваши хотелки, но это уже вы сами как-нибудь.

Предлагаю вам следующий алгоритм ваших дальнейших действий:

Если вы поняли код выше и легко можете написать подобный, то, как я и ответил выше, просто решайте вашу задачу в лоб. Сложную задачу разбивайте на подзадачи. Обучение вас этому навыку выходит за рамки ответа на ваш вопрос, но вы можете начать с Википедии.
Если вы с трудом поняли код выше или вообще ничего не поняли, но хотели бы понять, то подтяните знание самого языка. Без таких базовых понятий, как "массив" или "цикл", программировать практически не получится вообще. Объяснение основ выходит за рамки ответа на ваш вопрос, но вы можете начать с чтения учебника.
Если вы не хотите ни в чём разбираться, а просто хотите, чтобы вам предложили готовое решение и чтобы оно просто работало, то подтяните ваше умение формулировать, чего именно вы хотите. Текущий ваш вопрос сформулирован сумбурно, в стиле "чтобы у меня всё было, и мне за это ничего не было". При таком подходе придётся слишком долго ждать телепата 80 лвл. Лучше будет красиво, коротко и ясно объяснить детали, чтобы помочь смог любой специалист без уточняющих вопросов. Увы, объяснение принципов того, как задавать вопросы, снова выходит за рамки ответа на ваш изначальный вопрос, но вы можете начать с чтения правил этого ресурса. Хотя лаконично формулировать мысли они вас не научат. Но ведь надо же с чего-то начинать, верно?


Худший ответ: Не знаю есть ли в JS функция prinf или её аналог, но она то, что нужно.

Вот тут что-то похожее https://stackoverflow.com/questions/17224130/forma...
Вопрос: Можно ли использовать внешний накопитель для установки программ?

Лучший ответ: Можно 
Ntfs
Идея так себе

Худший ответ: Лучше всего использовать Portable версии программ - чтобы исключить излишнюю связанность с системой. Они предназначены для размещения на подобных носителях. Лучше NTFS.
Вопрос: Правильно ли подключен процессор ардуино?

Лучший ответ: Почти - блокировочных конденсаторов (100n керамический, 10u электролит) по питанию не хватает. Если будете пользоваться АЦП, ему желателен LC фильтр.

Худший ответ: Да. Можно ещё добавить дроссель на 22 мкГн между +5V и AVCC и AREF. Это заметно уменьшит шумы в АЦП.
И на RESET нужна кнопка на землю.
И советую добавить диод на +5V. Это сделает запуск м/к намного стабильнее.
Вопрос: Питон парсер сохраняет только последние данные, как решить?

Лучший ответ:  with open("pae.csv", "w", newline='', encoding='cp1251') as file:Вместо "w" нужно использовать "a".
P.S. без причины не стоит использовать 1251, лучше в utf-8 сохранять и открывать редактором, который поддерживает разные кодировки.

Худший ответ: Решил проблему таким способом, может кому понадобится
# -*- coding: utf-8 -*-
import csv
import requests
from bs4 import BeautifulSoup
import fake_useragent

bl = []

def get_request(url, header):
    r = requests.get(url, headers=header)
    return r.text

def get_content(html):
    soup = BeautifulSoup(html, 'lxml')

    link = soup.find('ul', class_='menu-m mobile_menu_fixed').find_all('a')[0:2]

    all_category = []

    for i in link:
        all_category.append('https://termo-door.ru' + i.get('href'))

    for n in all_category:
        
        r = requests.get(n)
        soup = BeautifulSoup(r.text, 'lxml')
        kolv_str = soup.find('ul', class_='c-pagination')

        if kolv_str is not None:
         
            pars_count = soup.find('ul', class_='c-pagination').find_all('a')[-2].text
            for i in range(1, int(pars_count) + 1):
                l = (n + f'?page={i}')
                r = requests.get(l)  
                soup = BeautifulSoup(r.text, 'lxml') 
                block = soup.find_all('div', class_='name')
                for i in block:
                    yield ('https://termo-door.ru' + i.find('a').get('href'))
        else:
            block = soup.find_all('div', class_='adaptive col-lg-5 col-md-4 col-sm-12 col-xs-12 fly-to-cart flexdiscount-product-wrap hover-active')
            for i in block:
                yield ('https://termo-door.ru' + i.find('a').get('href'))


def get_content_parser(html):
    global bl
    soup = BeautifulSoup(html, 'lxml')

    try:
        name = 'No name'
        name = soup.find('h1', class_='category-name').text.strip()
    except:
        pass

    try:
        price = 'No price'
        price = soup.find('span', class_='price nowrap').text.strip()
    except:
        pass

    try:
        img = 'No photo'
        img = 'https://termo-door.ru' + soup.find('img', id='product-image').get('src')
    except:
        pass


    bl.append(
        {
            'name': name,
            'price': price,
            'img': img
        }
    )
    return bl

def save_content(bl):
    with open("pae.csv", "w", newline='') as file:
        writer = csv.writer(file, delimiter=";")
        writer.writerow(("Название", "Цена", "Фото"))
        for item in bl:

            writer.writerow( [item['name'], item['price'], item['img']] )


def main():
    url = 'https://termo-door.ru/'

    user = fake_useragent.UserAgent().random
    header = {'user-agent': user}

    link = get_content(get_request(url, header))
    for i in link:
        html = get_request(i, header)
        data = get_content_parser(html)
        save_content(data)



if __name__ == '__main__':
    main()
Вопрос: Как сопоставить логический диск в Windows c RAID-массивом?

Лучший ответ: Можно проверить в свойствах диска (в Диспетчере дисков) значение параметра "Расположение" (Location) - там обычно что-то типа "Location 3 (Bus Number 0, Target Id 6, LUN 0)" и сопоставить его со значением параметра "Имя диска " в консоли Smart Storage Administrator, там же в пункте "Сведения о разделе диска" указаны буквы дисков.
Как сопоставить диск

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

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

Лучший ответ: Начните вот с этого:
$rsMyCredits = $objDBCD14->queryUniqueObject(
    "SELECT Balance FROM tbl_users WHERE UserId = '" . $rs->UserId . "' FOR UPDATE"
);

Худший ответ: Похоже больше на гонку - когда запрос A приходит позже запроса B.
Решаются такие проблемы индивидуально, в зависимости от остальной архитектуры грубо говоря ичего-то универсального тут нет.
Касаемо Вашей ситуации, мне лично непонятно, каким образом очерёдность запросов может повлиять на результат, т.к. в моём понимании текущей ситуации баланс это либо сложение либо вычитание, и ничего особо страшного не будет, если будет  -1 -2 -3 +10  а не +10 -1 -2 -3   итог то будет один.

Можете слать баланс ДО и какой должен быть ПОСЛЕ и все изменения проводить скажем раз в N секунд, а до этого просто всё собирать в некую очередь для дальнейшей сортировки/понимания кто что делает и когда, во время которой отказывать в запросах, если выполнение долгое и т.д.
Вопрос: Как сделать передвижение и прыжок игрока?

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

Худший ответ: Пожалуйста
Вопрос: Как реализовывать «разные версии одного кода»?

Лучший ответ: Да что тут можно придумать? Создаешь один общий класс для всех трёх типов пользователей, затем делаешь 3 класса наследника, расширяющих общий для всех класс. Ну и таким образом в зависимости от того, какой тип пользователя зашёл на сайт, делаешь инстанс соответствующего класса и работаешь с его методами.

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

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

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