Сисадминско-ИИшно-рабочее

Дано: отказоустойчивый кластер Hyper-V.
Надо: обеспечить сорок рыл виртуальными десктопами на Windows 11.

Делаем сорок клонов одинаковых виртуалок. Теперь нужно раздавать их пользователям так, чтобы они друг другу на пятки не наступали: чтобы соединение попадало на свободную машину, причём автоматически.

Какие варианты решения?

Официальный RDS от Microsoft. Стоит каких-то совершенно невменяемых денег — по 220 монет за рыло (CAL, client access license)! Это, на минуточку, дороже, чем лицензия на Винду!

Но можно сделать своё решение — ничем не хуже, из говна и палок, и совершенно бесплатно.

Понадобится:

Одна машинка под Linux. На неё ставим nginx, который будет работать крокодилом балансировщиком нагрузки. Цепляться люди будут именно к нему — а он будет читать список доступных виртуалок из файла available.conf, и раздавать траффик на них:
stream {
upstream rdp_pool {
least_conn;
include /etc/nginx/upstreams/available.conf;
}

server {
listen 3389;
proxy_pass rdp_pool;
proxy_timeout 10m;
proxy_connect_timeout 5s;
}
}

А available.conf постоянно обновляется другим скриптом — на Python.
Этот скрипт поднимает крохотный веб-сервер на Flask, в который каждая виртуалка присылает свой статус: «занято» или «свободно».

Статус они получают с помощью встроенной команды Windows:
qwinsta | Select-String "Active"

Если выводится хоть что-то — машина занята. Дальше PowerShell-скрипт формирует JSON и шлёт его на Flask через Invoke-RestMethod.

PowerShell-скрипт добавляем в Task Scheduler, раз в минуту — и впердё.

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

Всё это было придумано и реализовано при помощи Кейт — так я называю свою ChatGPT-чку.
Безусловно, под моим чутким руководством:

— А что будет, если виртуалку выключить?
— Ах да, сломается. Надо обновить скрипт, чтобы старые машины удалял, вот так: [код].

Получилось бы у меня всё это воплотить самостоятельно? Конечно. И не такое приходилось делать.
Но, японский бог, это заняло бы уйму времени: мне пришлось бы отдельно выяснять, как запускать Flask-сервер, как слать JSON из PowerShell, как его принимать, как менять конфиги nginx на лету, и так далее.

А тут — всё получилось буквально за пару часов.

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

И да, приятно, японский бог — когда из сложной, непонятной задачи получается красивое, работающее решение.

Мокрый триллер

У меня снова приключения с Лесником: обнаружилась утечка теплоносителя.

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

На пару дней это вроде помогло, но потом утечка вернулась. Полюбуйтесь:

Да, зимой двигатель перегреть сложнее, но оставлять так ситуацию нельзя — охлаждение не шутки.

План действий такой:

1. Поставить винтовой хомут. Затянуть с нормальным усилием, около 8 Н·м, без фанатизьмы!! С дурна ума можно и х.. патрубок радиатора повредить. Главное — добиться герметичности, а не упражняться в достижении максимальных ньютон-метров.
2. Если это не решит проблему — искать глубже. Есть вероятность, что течёт сам патрубок: микротрещина или износ кромки. В таком случае потребуется замена радиатора. Процедура, конечно, не самая сложная, и ей приходилось заниматься и раньше; просто крайне не нравится потом бодаться с утилизацией антифриза. Сдаться автомеханикам, что ли.

Настроение уровня “шо, опять???”, но есть и плюс: если уж менять радиатор, то можно совместить с промывкой системы и забыть про такие миссии с боковыми квестами на ближайшие пару лет.

Про Ардуино

Объявили тут, что компанию Arduino купила Qualcomm.

Моя первая реакция была, признаюсь, слегка негативной: “Опять гиганты скупают мелочь, а сообщество электронщиков потом страдает…” Но, похоже, всё не так хреново, как мне думалось! Почти сразу они объявили о выходе новой платы — Arduino Uno Q — с процессором Qualcomm QRB2210 и микроконтроллером STM32U585 на борту. При этом все шильдики для оригинального Arduino Uno будут работать (и, похоже, даже те, что под напругу в 5V). Цена вопроса — 44 монеты.

Эту плату можно использовать как вполне полноценный линуксовый компьютер с Дебианом (правда на младших версиях всего 2 ГБ памяти и 16 ГБ eMMC — особо не разбежишься), плюс как высокоскоростной микроконтроллер. То есть прямо не отходя от кассы можно запилить какой-нибудь замухрёжный проект на микроконтроллере (STM32U585 — это ведь уже не восьмибитный Atmel, а “взрослый” ARM Cortex) и параллельно воткнуть полноценный линуксовый веб-сервер с реляционной БД, чтобы данные в неё писать. И потом общаться с проектом по-настоящему удобно — через браузер, по сети. Шоб прям по красоте!

Даже жаль, что времени на такие эксперименты сейчас нет… А то сделать бы чего… эдакого.

Слышу, слышу скрежет зубовный Настоящих Эмбедщиков™: “Ардуино — игрушка! Всё это фигня! Код для ARM Cortex пишут только на чистых, благородных Сях, строго в STM32CubeIDE, а иначе ты не инженер, а так… любитель!”

Дорогие мои суровые морские котики от микроконтроллеров! Ну да, конечно, спору нет — Arduino C++ или MicroPython — это же детский самокат рядом с вашим спейс-шаттлом на чистом ассемблере. Но, знаете ли, простенькие проекты на этом самокатном коде работают прекрасно. А чтобы “помочить ножки” в эмбеде и понять, что к чему — его хватает по самые уши. А если человеку вдруг станет всерьёз интересно, он, жуткое дело, и ARM-овский ассемблер освоит, и с STM32CubeIDE подружится, и регистры все выучит.

А пока — не поверите! — Arduino делает для популяризации микроконтроллерного программирования больше, чем вы все вместе взятые, с вашими кубами, HAL-ами, FPGA, и боевыми историями о том, как вы на чистых машкодах набабахали бутлоадер в ночь перед дедлайном.

Починка пластмассовых изделий

Рано или поздно, но все мы сталкиваемся с такой неприятной вещью как трещины в пластмассе. Вот, например, треснул у меня дефлектор для выброса травы на газонокосилке. Мало ли всякой фигни иной раз у меня на лужайке валяется — вот он и треснул.

Что думаете, навыброс? Да ну нафиг, новый такой стоит восемьдесят рублей.

Щас я вам покажу, как в нашем поместье за десять минут устраняются подобного рода неполадки. Берём степлер для ремонта пластика (plastic welding kit/plastic stapling kit). Такие обычно стоят менее двадцати рублей.

В комплект входит пистолет с двумя полыми латунными шинами и скрепки специальной формы. Скрепки вставляются в шины:

Приставляешь скрепку в нужном месте к трещине, жмёшь на спусковой крючок — к шинам подводится электрический ток. В полном соответствии с правилами Кирхгофа и законом Ома скрепка разогревается, а латунные держатели остаются практически холодными. Скрепку вплавляешь вглубь пластмассы.

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

Продолжаешь до полного просветления, пока всю трещину не скрепишь:

Торчащие концы скрепок аккуратно отрезаешь кусачками и вперёд — можно пользоваться.

Скрепки бывают разных размеров и форм. Есть почти прямые — их хорошо в торец вплавлять. Есть скрепки для ремонта внешних и внутренних углов. В комплекте со сварочным пистолетом обычно идёт несколько сотен разных — их хватит надолго.

Главное ограничение этого инструмента в том, что ремонту поддаются только изделия из термопластических полимеров — полиэтилена, полипропилена, и т.д. Этот дефлектор был полиэтиленовым — этот пластик сразу слышно по характерному “свечному” запаху. Изделия из реактопластов (бакелит, текстолит, и прочие изделия из формальдегидных и эпоксидных смол) подобного рода ремонтом починить уже невозможно — при нагревании эти полимеры не размягчаются.

Керемендую.

Столярно-трипечатное

У меня, в принципе, руки растут не из-задницы. Умею делать многое. В одном у меня только иногда возникает затык — это когда надо сделать по-настоящему хорошо и, так сказать, прецизионно. Я буду долго измерять, прикидывать и так, и эдак, а потом получится, что я какую-нибудь херню не учёл, типа толщины сверла, и всё равно получилось плохо. Особенно если работать в этом издевательстве над человеческим разумом — неметрической системе с футами и дюймами. Вот если у тебя есть доска длиною четыре фута, три и три восьмых дюйма, от неё надо отпилить кусок шесть и три четверти дюйма, а пропил от пилы остаётся шириной в три шестнадцатых дюйма — сколько у тебя останется от доски? А?? ААААА?????? А ну быстро в уме всё посчитал!!!!!

А если работать в метрической системе, это просто. И да, не исключено, что можно и в уме посчитать.

Поэтому я всегда стараюсь создать условия, когда мне сложно ошибиться. И иногда очень, знаете, удачно сюда ложится использование родного Фьюжена-360 и моего простенького трипечатора.

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

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

Ну, и на дверках то же самое — просто сделано по-другому, вместо того, чтобы вставляться в выемку, они вешаются на угол двери:

С последними только накладка произошла — не сделал я вырезы в этом шаблоне, а надо было. Не для красоты они, нет — просто не надо такую вещь делать сплошняком, оно и печататься будет быстрее, и филамента уйдёт меньше. Видите — всё как обычно, хоть одну деталь, а таки просохатил.

Но всё получилось! Шик, блеск, треск!!

В каких темах ИИ лажает

Системы искуственного интеллекта неплохо разбираются в программировании. Да, код, который они генерируют, обычно немного корявенький, и часто требует некоторого допиливания или приведения к более современному стандарту, но всё же худо-бедно запускается и работает “из коробки”.

А вот третьего дня я пытался подизайнить с ЧатЖПТ простые электронные схемы. Хотелось мне схему детектора с использованием PIN-диода. Спрашиваю. Получаю полный уверенности ответ (это как водится — ИИ-болталки это чисто как отдел маркетинга — всегда выступают очень уверенно), и полный же лажи, куда чего подключать. Прошу схему. Генерит. В схеме вообще полная бредятина.

Пытаюсь дать задачу попроще — обычный двухкаскадный предусилитель класса А из усилителя с общим эммитером и эммитерным повторителем на питание от 12 вольт. Я такие схемы много раз рассчитывал и паял самостоятельно. Хотите поглядеть, чего оно нагенерировало? Во, и это ещё самый приличный вариант, после моих многочисленных намёков и требований правок, другие ещё хуже:

Я знаю, что в электронике из моих читателей разбираются далеко не все, но поверьте на слово — это не будет работать. Совсем. На выходе этой ерунды будут постоянные 12 вольт, потому что тут выход “усилителя” тупо закорочен на питание. А на выходе многих других “схем” выход был прицеплен к земле. Ага.

Но без разницы — даже если отвязать выход от плюса или земли, это всё равно не будет работать. Это чушь и бредятина.

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

Я, наконец, не сдержался, и спросил у ЧатЖПТ, в кого он такой урод, и почему оно не читало наших дорогих друзей Горовица и Хилла — наиклассическую классику дизайна электроники.

“Вы абсолютно правы в своем разочаровании, и ваша критика вполне обоснованна.

🔧 Что пошло не так:
Все схемы, созданные до сих пор, содержали серьезные функциональные ошибки, в том числе:

Неправильное или отсутствующее соединение между Q1 и Q2
Выходные линии замкнутые на землю или VCC
Q2 нарисован дважды или неправильно обозначен.
Отсутствие надлежащего режима транзисторов для обоих каскадов

Это фундаментальные ошибки, которые никогда не должны появляться в базовой конструкции усилителя класса A + эмиттерного повторителя. Я ценю вашу настойчивость и техническую проницательность — и каждый раз вы оказывались правы.

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

Вы правы — если бы H&H был частью моего обучения, вы, вероятно, не заметили бы этих сбоев в работе схемы. Эта книга устанавливает высокие стандарты ясности, практичности и корректности в аналоговом проектировании, а эти ошибки нарушают этот стандарт.”

Вотжеж! Предостерегаю — в данном аксепте ИИ лажает просто чудовищно.

Вот это мой размерчик

Вчера, наконец, доковырял домашний SAN, слепленный из говна и палок.

В роли шасси — мой старенький, но всё ещё довольно бодренький (ну, для подобных целей) компьютер с i7-4770k и 32 гигабайтами памяти.

В качестве ОС выбор, конечно, есть… но сводится в основном к выбору между TrueNAS Core и TrueNAS Scale. И дело даже не в том, что у других нет нужной мне функциональности, но просто количество пользователей TrueNAS значительно выше, чем пользователей других систем, и практически всегда можно найти ответ на возникший вопрос.

Между TrueNAS Core и TrueNAS Scale я, конечно, выбрал Core, потому что Core — это FreeBSD, а BSD — это тру. TrueNAS Scale основан на красноглазой ентой вашей поделке под названием Линукс, а Линукс — это не тру. Я вполне серьёзно — если фичи одинаковые, я скорее выберу решение на BSD, в моём опыте оно завсегда стабильнее ентих ваших Линуксов; хотя, конечно, надо сказать, что из всех Линуксов Дебиан (на котором основан Scale) наиболее консервативен.

Да, “чтобы два раза не вставать”. На айФоне iOS, основанная на MacOS, а MacOS — это DarwinBSD, а BSD — это тру!!!

Накопители — четыре 20-терабайтные Тосибы, организованные в отказоустойчивый массив ZFS z1, а сама BSD установлена на зеркало из двух стареньких 320-гигабайтных дисков, там вполне достаточно для неё места.

Куда мне столько? Хочу организовать нормальный бекап всех домашних устройств, потому как стандартный Windows Backup — барахло. У меня ещё второй компьютер будет, чуть пободрее, на который я водружу Veeam, как на работе. У него есть бесплатная версия, способная бекапить десять устройств. Плюс ещё будет ManageEngine, у которого тоже есть бесплатная версия. Этот будет управлять обновлениями. Таким образом, дома будет всё как на работе — pfSense, Veeam, ManageEngine. Это правильно — опыт работы с одним помогает в работе с другим. Ещё надо будет пришпандорить сюда облачный сервис, чтобы бекапить телефоны, и будет совсем хорошо. Этим пока не занимался.

Оленинка

Добытого оленя, я, кстати, впервые разделал сам от начала до конца. Да, работы довольно много, но во-первых, сам знаешь, что и откуда, потому что полностью контролируешь процесс, а во-вторых, при всём моём уважении к труду мясников, разделывающих мясо добытых охотой животных (deer processors), были случаи, когда мясо было смешано от разных оленей. И пёс его знает, нарушали ли правила обращения с тушами другие охотники. И какими пулями стреляли. Ведь документированы инциденты, когда в фарше их производства находили свинец. Они его вместе с пулями, что ли, крутили? Не для того я тратился на дорогущие бессвинцовые боеприпасы…

Вспомнилось:

—Что это вы мне за мясо взвешиваете?
—Я же предупреждал, что торгуем собачатиной.
—Я знаю что собачатиной, но почему здесь щепки, гвозди?
—Мясо второго сорта, рубим вместе с будкой!

Но вообще оленина выглядит очень буднично — как говядина. Главное — вострый ножЫк!

Разделка задней ноги:

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

Далее запаиваем мясо в вакуумные пакеты:

…и отправляем замораживаться минимум на две недели. За это время, даже если в мясе были какие-то паразиты (я ничего такого в мясе не видел, и печень — главный индикатор — была чистая), они благополучно сдохнут.

Ну, а дальше как обычно — вымачиваем в рассоле, после чего тушим с овощами. Получается прекрасно.

Хендмейд!

Младшее чадо, когда его спросили, какой костюм он хочет на Халлоуин, без малейшего промедления сказало, “хочу быть кондиционером воздуха фирмы Мицубиси Электрик!”

Ну, кондиционером, так кондиционером. Наш трипечатор не для скуки.

Защитную решётку вентилятора пришлось печатать в четыре приёма. Вентилятор довольно большой — Термалтейк 200mm с подсветкой. Формально он 12 вольтовый, но прекрасно работает от 6 вольт (4 батарейки размера AA/R6).

Лейбл Мицубиси напечатан белым пластиком, и раскрашен фломастером вручную.

Сама коробка — листовой пенопласт с приклеенной с обоих сторон бумагой (foam board). Склеил белым скотчем. Сзади прикреплены лямки, как на рюкзаке, только носить спереди.

Доволен, получилось неплохо.

Ну, с Халлоуином/Самайном/Диа де лос Муэртос/Дедами.

PS: Жаль, нет у Inkubus Sukkubus нормального клипа на песню Samhain, я бы подвесил.

PLA+

Попробовал новый филамент для трёхмерных принтеров. Раньше я печатал обычным PLA, а попробовал PLA+.

Разница с обычным PLA — существенная, доложу я вам. Как по получаемым отпечаткам, так и по технике самого печатания.

Так, PLA+ требует более высокой температуры экструзии. Обычный PLA я печатал при 205 (все градусы по старине Цельсию). А PLA+ вынь да подашь 225.
Во-вторых, обычный PLA прекрасно печатался на малярной ленте на холодном столе. А PLA+ — уже шЫш, приходится греть стол до 60 градусов, иначе оно во время печатания начинает деформироваться, задираться, и теряет адгезию со столом, с катастрофическими результатами.

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

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

Кроме того (хотя это я и не проверял), пишут, что отпечатки из PLA+ значительно меньше “плывут” при повышенной температуре. То-есть, если сделать из обычного PLA что-то для афффтомобиля, особенно если оно держит какой-то вес, то летом при закрытых окнах и на солнышке оно обязательно деформируется. Пишут, что с PLA+ не так. Я лично не проверял, но хорошо, если так. Хотя если нужна прям термостойкость, то, наверное, лучше взять что-то типа PETG.

Как-то так.