Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как сделать так, чтобы VS code понимал код Wordpress?

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


1. Открой настройки->параметры
2. В поиск напиши stubs
3. Выбери в появившемся списке wordpress и нажми 'Добавить элемент'

После этого все начнет работать нормально.

Худший ответ:
Поставьте плагин для вордпресса. В последней версии vscode они есть
Вопрос: В каких реальных практических задачах применяются алгоритмы сортировки?

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

Товары в магазине (сортировка по цене, году выпуска, габаритам, весу, срокам поставки)
Студенты в вузе (сортировка по среднему балу, кол-ву прогулов, уровню IQ, числу хвостов, ФИО)
Города/страны (сортировка по населению, рождаемости, ВВП, ВВП на душу населения, заболеваемость ковидом, гриппом, раком мозга)
Астрономические объекты (масса, размеры, плотность, альбедо, параметры орбит)
Телефонный справочник (не знаю чем вам не нравится этот пример)
Да все что угодно.

Берите любые открытые данные (гуглите Public dataset) любого рода и делайте с ними сортировку по любому критерию, который вам нравится.

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

Лучший ответ:
Видео Thoisoi

Худший ответ:
Сахар или соль.
Вопрос: Как защитить банковский акаунт обычному пользователю?

Лучший ответ:
1. Для подтверждения любых банковских операций - отдельный номер телефона (и сам кнопочный аппарат), НЕ смартфон и БЕЗ интернета!
2. Никому ничего не сообщать, не диктовать и никому не верить.
"Капля" сомнений/подозрений - сразу перезванивайте сами в свой банк.

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

Ещё хороший вариант - выставить себе лимит платежей, тогда много не украдут.

И ещё: две линии защиты, а которых Вы сказали, надо привязывать к разным аппаратам. Если это SMS - то можно иметь простую звонилку, её труднее взломать.

Ну и главное - никому не сообщать пин-код и т.б. CVV. CVV хорошо бы заклеить/закрасить.
Вопрос: Отступ в адресной строке?

Лучший ответ:
что такое отступ если не пробел %20?
Новая строка что ли?

%0A - вот так возможно сработает

Осталось понять причем здесь file_get_contents и php

Худший ответ:
Используйте urlencode. Ниже пример работы. Надеюсь, я понял Вас.

<?php
$foo = "bar\nbaz".PHP_EOL."bat
qux";

$url = urlencode($foo);
echo $url;
$response = file_get_contents($url);
echo $response;
Вопрос: Стоит ли работать в компании, где IT расходная часть бюджета?

Лучший ответ:
Стоит ли работать в компании
Если компания плавает на рынке довольно давно, то стоит. Сейчас не 1970 год, что бы не знать о работодателе ничего. Открываете отзывы, курите faq о компании, смотрите как она вела, ведет себя на рынке, если всё устраивает - велком.

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

Итог: нужно просто не тупить, и работать на совесть, тогда в вашу сторону даже побояться чихнуть.

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

Лучший ответ:
один является роутером.   все остальные работают как свитчи. все кабеля подключатся в разъемы LAN.
если позволzет операционка то и WAN порт переключить в LAN.
вариант правильныйй: если задач межсетевого роутинга в дальнейшем не предвидится, то продать их на авито и купить свитчи (портов больше получится).

Худший ответ:
Второй и третий превращаем в switch. 
Profit.
Вопрос: Можно ли использовать Ruby вместо JS для разработки фронтенда?

Лучший ответ:
Можно, на гитхабе несколько таких компайлеров находятся. Но если проект сложнее стандартной демки "TODO App", то оно того не стоит. звучит хайпово. 
Ну с этой точки зрения можно. Будет что обсудить по пути из лофт-антикафе за чашкой смузи в барбершоп.

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

Лучший ответ:
Да

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

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

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

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

ИМХО, нужно думать над тем как уменьшить кол-во ВОЗНИКАЕММЫХ обращений, а не как больше обработать :)

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

Тут все просто и зависит от того
1) у вас текущий тех.отдел только траблшутит или еще и может как-то влиять на положение дел в ИТ? Другими словами есть ли понятие 1-2-3 линия и разделение по направлениям (ПК, сервера, сети, БД, етц)
2) Знают ли ваши пользователи как и что "устроено в ИТ". Т.е. есть ли видение в целом, инструкции, база знаний, описание процессов и тд и тп
3) Какие у отдела/ИТ_в_целом есть инструменты для: 
- мониторинга
- центр.уплавления ПК/серверами (апдейты, софт, прочеее)
- инвентаразации/управление активами и ПО
- прийом/распределение/учет заявок. Аналитика всей кухни "заявок"
4) что у вс с ИБ 

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

Худший ответ:
Проблема у вашего "отдела" всего одна - некомпетентный руководитель (также известный как "эфективный менеджер").
Уже как ее следствие - приглашение некомпетентного консультанта.

Для начала оба почитайте ITIL.
Затем попробуйте натянуть его на вашу организацию. 
В результате у вас должно сформироваться "видение" процессов техподдержки именно вашей организации.
Его и реализуйте
Вопрос: Выбор ноутбука до 40 000р?

Лучший ответ:
Нормальные ноутбуки начинаются хотя бы от 60 к.р. сейчас, с дискретной видеокарточкой и нормальным охладом с 2 кулерами.
Попытайтесь за вашу сумму взять что-нибудь на Райзене, обязательно с ssd и 8 гб оперативки минимум. Это будет отличная покупка за такие деньги. Не стесняйтесь покупать в менее популярных московских магазинах, а не только в сетевых днсах и ситилинках. С вашим бюджетом обязательно брать без винды, её вы сможете накатить самостоятельно.
Приеду на работу - попробую найти вам пару вариантов, регион только укажите.

Худший ответ:
Вот  отличный вариант
https://www.ebay.com/itm/Lenovo-ThinkPad-T460s-i5-...
Вопрос: Как достать дату регистрации пользователя ВК?

Лучший ответ:
<?php
$text = file_get_contents("https://vk.com/foaf.php?id=1488");
preg_match('|ya:created dc:date="(.*?)"|si', $text, $arr);

$time_create = strtotime($arr[1]);
$time_current = time();

$check_time = 5/*дн.*/*86400; //5 полных суток

echo "Created: ".date("d-m-Y H:i:s", $time_create)."\n";
echo "Compare date: ".date("d-m-Y H:i:s", $time_current)."\n";

if(abs($time_current-$time_create) >= $check_time)
{
    echo "С момента регистрации прошло больше 5 дн."."\n";
}
else
{
    echo "С момента регистрации прошло меньше 5 дн."."\n";
}

результат работы

Created: 02-12-2006 13:10:20
Compare date: 03-03-2020 22:49:32
С момента регистрации прошло больше 5 дн.

Худший ответ:
$date_str = simplexml_load_file('https://vk.com/foaf.php?id=1')
  ->xpath('//ya:created/@dc:date')[0];
// 2006-09-23T20:27:12+03:00

$now = new DateTime();
$then = new DateTime($date_str);
$interval = $then->diff($now);
echo $interval->format('%a дней'); 
// 4910 дней
Вопрос: Что работает быстрее 10 потоков в 10 процессах или отдельные 100 потоков?

Лучший ответ:
Между потоками и процессам маленькая разница на уровне ОС. 
У процессов изолированная память, а потоки разделяют общую память внутри процесса. 
И это по сути вся разница.
В плане производительности большая разница между потоками(процессами) и корутинами. Можно запустить 100_000 корутин и все будет работать, а 100_000 потоков скорее всего упадут с Out of memory.

Худший ответ:
Все зависит от того как долго будет подниматься контекст потока\процесса и как долго каждый будет ждать выполнения задачи. Грубо говоря если каждый поток делает запрос к сайту и ответ получает за 20мс то профита от процессов не будет, если же каждый будет загружать данные секунд 10 и после их обрабатывать то профит может быть значительным. 
Если по задаче не ясно будет ли профит можно воспользоваться 
https://joblib.readthedocs.io/en/latest/generated/... 
и попробовать в каждом из режимов (в этой библиотеке режим меняется простым изменением настройки)
Так же стоит посмотреть в сторону celery, возможно это даст больший контроль над процессом.
Вопрос: На чём лучше поднять домашний сервер?

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

Худший ответ:
Для FreeNAS можно и меньше ОЗУ, когда объемы дисков не большие, но на данный момент 8Гб это мелочь. Я использую  FreeNAS с 16Гб ОЗУ. Недавно налетел на "грабли", хотел под просмотр фильмов использовать  DLNA (plugin EMBY), результат печальный. Если на 1080р все было нормально, то в 4к через каждые секунд 30 тормоз. Проверил загрузку ЦПУ, на 1080р - 20%, на 4к - под самую крышу. Похоже к 4к на дохлой козе не подъехать или надо менять NAS на медиа-шарманку .
Вопрос: Как происходит формирование изображение в матрице?

Лучший ответ:
Можете почитать например вот такое:
https://infopedia.su/12xb508.html

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

Лучший ответ:
Что вы любите в своей работе?
Деньги.

Худший ответ:
Ну если брать простой вывод из api, то одно дело, когда там 20 записей, и совсем другое когда приходит 70мб, и там их больше миллиона, и все это дело нужно красиво отобразить. Что будешь делать в таком случае? Есть ли у тебя знания для этого?
А про бэк забудь, учитывая то, что ты верстак, то при попытке вытащить этот миллион записей вместе со всеми связями просто повесишь базу, в лучшем случае на какое-то время, в худшем все ляжет намертво всерьез и надолго.
Вопрос: VueJS: где лучше хранить css, в компонентах .vue или main.css?

Лучший ответ:
В Vue приложении используем препроцессор (scss). Кроме того используем внешние пакеты для вертикального ритма и сетки.
Хочется хранить стили в однофайловых компонентах, при этом имея возможность определить глобально часть sass-переменных, кое-какие миксины и функции. Также нужно как-то подключить миксины сетки и ритма, возможно подключать стили от сторонних пакетов.
Вариант импортировать scss-файл с определениями в каждом компоненте сразу откинули, ибо люди мы ленивые.
Что делаем:
Подключаем в точке входа (main.js) основной стилевой файл:import '@/styles/main.scss';
import Vue from 'vue';
//...
В нем подключаем всякое-разное-глобальное-базовое:@import "base/normalize";
@import "base/init";
@import "base/typography";
@import "base/code";
@import "base/links";
@import "base/tables";
@import "base/buttons";
@import "base/control-group";
@import "base/general-form";
@import "parts/transitions";
...
Далаем два файла: env-development.scss и env-production.scss$NODE_ENV: development;
@import "cfg-vars";$NODE_ENV: production;
@import "cfg-vars";
Переменная $NODE_ENV нам нужно. чтобы управлять стилями в зависимости от окружения.
Дальше в cfg-vars.scss подключаем/пишем все необходимые глобальные конфиги$DEV_MODE: $NODE_ENV == development;
$MAX_INT32: 2147483647;

@import "cfg-vrhythm";
@import "cfg-grid";
@import "../../../node_modules/vrhythm/source/vrhythm";
@import "../../../node_modules/bs-grid-system/source/scss/bs-grid";
@import "../mixins";
@import "cfg-z-indexes";

$wt-family-base: "Open Sans", sans-serif;
$wt-family-head: "Roboto Slab", serif;
$font-family-monospace:  "Fira Code", Menlo, Monaco, Consolas, "Courier New", monospace;

//==
//== Color palette
//== ======================================= ==//

$palette-light-blue: #3c8dbc; // Primary
$palette-red       : #dd4b39; // Danger
$palette-green     : #00a65a; // Success
$palette-aqua      : #00c0ef; // Info
$palette-yellow    : #f39c12; // Warning

...
Почти всё готово. Осталось только автоматически подключить эти конфиги к сборке.
Идём в vue.config.js и добавляем секцию css:const NODE_ENV = process.env.NODE_ENV === 'development'
    ? 'development'
    : 'production';
//...
module.exports = {
    //...
    css: {
        extract: NODE_ENV === 'production',
        loaderOptions: {
            sass: {
                data: `@import "@/styles/config/env-${NODE_ENV}.scss";`,
            },
        },
    },
};
Теперь мы спокойно пишем стили компонентов на scss прямо vue-файлах, и оставляем возможность какие-то стили писать в отдельных файлах.
Enjoy!

Худший ответ:
https://github.com/styled-components
Почему не это?
Вопрос: Как научиться писать хороший код, применяя шаблоны проектирования и тд?

Лучший ответ:
Уже неоднократно обсуждали на тостере:
Где лучше практиковаться, чтобы научиться всеми фишками патерна?
Как научиться писать такой ООП код?
Как научиться использовать паттерны?
Как вы освоили шаблоны проектирования?

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

Лучший ответ:
Есть софтина от 10-Strike "Инвентаризация Компьютеров".
Ее преимущество в том, что для инвентаризации она использует WMI, т.е. никаких агентов на клиентские ПК ставить не нужно. Хотя и агент то же есть. Программа не бесплатная, но стоит не много. В свое время брал ее в контору и использовал.
Большинство конкурирующих продуктов для инвентаризации требуют установки агента.

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

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

Худший ответ:
А разве нельзя написать это по-человечески?
Я Vue не знаю, но из предложенных вариантов представляю себе это как-то так<accordion :items="items">
  <!-- add your content layout,
  in our case this is div  -->
  <div>{{item.content}}</div>
</accordion>
Я понятия не имею, но с моей точки зрения абсолютно логично использовать некоторого рода публичный интерфейс, строго декларирущий структуру items.
Главный дочерний элемент становится шаблоном для отрисовки содержимого внутри аккордиона. 
Шаблон тимлида мне абсолютно понятен без каких-либо знаний Vue. Ваш шаблон напоминает какую-то вуду магию. Надо лезть в документацию и разбираться, что к чему.
Могу предложить альтернативный вариант с прямым декларированием структурных элементов.<v-accordion :items="items">
  <v-title>{{title}}</v-title>
  <v-content>{{content}}</v-content>
</v-accordion>
Я не знаю, можно ли обойтись без всего того мусора, но его наличие меня раздражает.
Вопрос: Реально ли скачать торрент без единого сида?

Лучший ответ:
Теоретически -да.
Практически -  крайне маловероятно.
Сид - обладатель 100% файла и раздающий его.
Пир - обладатель какой-то части файла и раздающий его.
Теоретически что сумма кусков файла находящаяся у всех пиров будет как раз 100%.
Но на практике такое маловероятно.сегодня уже больше 4 часов жду, а ни одного сида нет, только 3 пира. Скачать этот торрент уже нереально?Ну почему нереально.
Может у кого нибудь просто компьютер выключен. Придет человек вклчюит - и пойдет раздача.
А может и нет.
Подождите хотя бы пару недель.

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

Юзаю utorent pack от elchupacabra
Там по умолчанию включен dht/pex (обход запрета)
Бывали случаи, когда сидов на торренте 0, но через dht находил их.
Вопрос: SpeedFan, Aida 64, кому верить?

Лучший ответ:
Стандарт на датчики "здоровья" ПК ущербный. Каждый датчик выдаёт какое-то значение, но его надо умножить на какой-то коэффициент и сдвинуть, чтобы получилось значение в человеческих единицах (температура в градусах, напряжение в вольтах...) Вот коэффициенты у разных датчиков разные, "догадайтесь сами". Разные программы догадываются по-разному. Возможно, что и SpeedFan не угадал, и Aida не угадала. Верить можно инструментальным измерениям без программной прослойки. Т.е. брать термопару к мультиметру или даже пирометр, и измерять. К сожалению, получится измерить температуру радиатора, а не кристалла.

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

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

Худший ответ:
Начинающему админу нужно уметь пользоваться поисковиком (научиться задавать правильные вопросы), находить и анализировать информацию. Ну и читать книжки: по сетям - от циско и СДСМ, по win - от MS (в интернете есть бесплатные базовые курсы администрированию ws2012r2), по линуксу - Эви Немет Unix и Linux системное администрирование. Базовая теория актуальна довольно долгое время, но ещё лучше параллельно всё пробовать (в лабораторных условиях) на практике и прикидывать как это может помочь в боевой среде. Хорошо будет начинать работу не в одиночку, а в отделе с админами.
Вопрос: Как правильно сформировать автоматические релизы на Github?

Лучший ответ:
в общем, решил вопрос:

name: Release

on:
  push:
    branches:
      - master

jobs:
  release:
    if: github.event_name == 'push' && github.ref == 'refs/heads/master'
    name: Release
    runs-on: ubuntu-latest
    steps:
      - name: Getting code
        uses: actions/checkout@master
      - name: Getting Python
        uses: actions/setup-python@master
      - name: Cache pip
        uses: actions/cache@v2
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('poetry.lock') }}
          restore-keys: |
            ${{ runner.os }}-pip-
      - name: Getting Poetry
        uses: dschep/install-poetry-action@v1.3
      - name: Getting PostgreSQL
        uses: harmon758/postgresql-action@v1
        with:
          postgresql db: 'test_db'
          postgresql user: 'postgres'
          postgresql password: 'postgres'
      - name: Installing dependencies
        run: poetry install
      - name: Running tests
        run: make coverage_run
      - name: Running coverage check
        run: make coverage_cmd_report
      - name: Running codestyle checks
        run: make check_black
      - name: Running types checks
        run: make check_mypy

      - name: Generate coverage report
        run: make coverage_xml_report
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v1
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          file: ./coverage.xml

      - name: Getting package version
        id: get_version
        run: echo "::set-output name=version::$(poetry version)"

      - name: Getting package clear version
        id: get_clear_version
        run: echo "::set-output name=clear_version::$(poetry version | cut -d ' ' -f 2)"

      - name: Make release and publish
        run: make release USERNAME=${{ secrets.PYPI_USERNAME }} TOKEN=${{ secrets.PYPI_TOKEN }}

      - name: Get asset name
        id: get_asset_name
        run: echo "::set-output name=assert_name::$(ls dist | grep gz)"

      - name: Create Release
        id: create_release
        uses: actions/create-release@latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ steps.get_clear_version.outputs.clear_version }}
          release_name: ${{ steps.get_version.outputs.version }}
          draft: false
          prerelease: false

      - name: Upload Release assets
        id: upload_gz
        uses: actions/upload-release-asset@latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: dist/${{ steps.get_asset_name.outputs.assert_name }}
          asset_name: ${{ steps.get_asset_name.outputs.assert_name }}
          asset_content_type: application/tar+gzip

Худший ответ:
Всё зависит от того, как ведётся история коммитов. 
Как по мне, так хорошим тоном вешать теги и собирать историю для релиза через условный git log tag1..tag2
как вариант поглядеть в сторону commitizen
ну и получившиеся данные скармливать уже в github action
Вопрос: Нужен совет дизайнеров?

Лучший ответ:
Всякие идеи можно подсмотреть на Dribbble и Behance.
Но там может страдать UX, т.к. большинство дизайнеров делают "красиво", но не всегда "удобно"

Худший ответ:
на примере букмекера
Вопрос: Как очистить массив в файле с помощью модуля fs?

Лучший ответ:
Прочитать файл, распарсить json, установить пустой массив в качестве значения интересующего вас свойства, превратить объект в json, записать файл.

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

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

Худший ответ:
у меня есть кт818в
резистор поищу

прога - фотошоп
отдельно искал картинки. но это вообще рисуют таккю красоту для сервиса tinkercad. в основном там 3д
но и схемки с ардуинами есть и проводки привязываются и даже можно приаттачить код на Си и запустить. у меня другой МК и прошивка. поэтому не вариант. спасибо попробую.