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

Чем-то такоэ похоже на проблемы при "bang-bang" схеме управления, когда контролирующий параметр применяется дискретно по принципу вкл-выкл.
Bang-bang control is an extremely aggressive algorithm that relies on response asymmetry to remain stable. Be absolutely certain that your motor controllers have been set to “coast mode” before attempting to control them with a bang-bang controller, or else the braking action will fight the controller and cause potentially destructive oscillation.
Постепенно погружаюсь в сабж. Впечатления положительные, хотя POV господина Гибсона вызывает у меня рвотные позывы, и прям счастье, что реальность стала развиваться немного в другом направлении. То есть да, это технооптимизм, но на уровне Стерлинга с его Схизматрицей и всякими там Стеноматями. Ага, разделено на две неравные части и одна части неизбежно и необратимо обходит другую. Хотя герр Верек в чем-то прекрасен.
Гигантская разумная опухоль в модуле жизнеобеспечения размером с ТПК межконтинентальной "баллисты" - это прям на уровне эстетики круто. Не круто то, что для такого "зародыша Б-га" нужен целый штат простых мясных человечков, которые размениваются как пешки. HighTech - LowLife, ога.
А прикольно еще то, что тут виден прямой прототип "мелантемы" из "Розы и Червя". Нечто, оплетающее мозг и работающее органическим wi-fi модулем на мозгу Энджи Митчелл. Причем если я все правильно помню, то органика вполне в состоянии собирать проводящие макроструктуры из металлов.
Наверное, если придать wetware нужный вектор, то он соберет не только медные клыки многощетинкового червя (соррьки, еще одно упоминание червия), но и что-то более интересноэ. Вроде RFID-антенны. Или проводящей сетки (а логические модули можно попытаться нарастить поверх из органических полупроводников)
Еще один вариант реализовать компонентный (a-la React/Vue) подход в чистом нативе.
Зачем - натягивание и кастомизация CMS или готовых сервисов, где слишком многое прибито гвоздями, и развернуть SPA здорового человека не позволят.
Как:
- Пишем <template>-ы с разметкой нужных нам глубоко кастомных элементов, закидываем их в JSON
- В точке монтирования подгружаем через fetch джсон с шаблонами, создаем временный элемент и через него (точнее, через innerHTML) цепляем все эти темплейты в head исходной страницы
- Пишем классы (ну или по-старинке через prototype) функции, которые вытягивают из head шаблоны, насыщают их обработчиками и монтируют в DOM
Это я к тому, что мы уже начали новый проджект с авторизацией через keycloak, а там возможности по визуальной кастомизации достаточно ограниченные. И поскольку каждая стадия авторизации - это отдельная страница со своим url-ом, то SPA тут никак не проканает.
Ну и классы из п3. можно будет потом закатать во вьюшные компоненты, а готовую часть темплейта для SFC скопипастить напрямую из джсона с шаблонами. А еще я понял, что реально соскучился писать код на нативке
Причем нет, не по работе, по сайд-проджекту. И вроде бы сроки ничем не ограничены, но я физически ощущаю это расхождение и не могу отвлечься от него.
А потом удивляюсь, что как-то подустал слегка
Самая основная
function setIntegrator(variation = null) {
const workerData = variation ? {...TEST_DATA, variation } : TEST_DATA
const integrator = new Worker(PHYSICS_PATH, { workerData })
return new Promise(resolve => {
integrator.on('message', (data) => {
resolve(data)
integrator.unref()
})
})
}
async function testRun(variationRange = []) {
const hasVariants = variationRange.length > 0
const integratorPool = variationRange.length ? variationRange.map(v => setIntegrator(v)) : [setIntegrator()]
const res = await Promise.all(integratorPool)
res.forEach((resData, index) => {
const keyPrm = hasVariants ? variationRange[index].key : 'basic'
fs.writeFile(`./result_reentry_${keyPrm}.txt`, resData)
})
}
(еще есть ответная магия в исполняемом воркере, но она скучная)
А это—выдаваемые резалт. Срез по высоте/дальности глиссирования. В самой нижней точке можно представить, как двадцатитонная туша из нержавейки, отсвечивающая по краям тускло-вишневым, с мультяшным звуком "пинг" отскакивает от плотных слоев атмосферы. И да, я бы эти четыре варианта ручками подбирал бы минут 40.

Берем
Вот конкретно сейчас интересно, а на какой высоте чему-то RASCAL-образному нужно выходить на полку, втапливать на полную ручку газа и разгоняться, пока лопатки не поплавятся. Слишком низко - большие расходы воздуха обнулятся возросшим же сопротивлением, придется съесть много горючки, а в более плотном воздухе будут большие тепловые потоки. Слишком высоко - разгон будет идти в час по чайной ложке, потому что тупо не хватит воздуха
При этом выглядит очень модерново по ключевым схемным решениям: метан как основное топливо, системы регенерации тепла (хотя тут и до прекулера недалеко, благо по теплоемкости метан сопоставим с водой). Время ~ 1980 - 1985 годы.
Немного об одном из создателей:
Grant E. Carichner received his BS and MS in engineering from UCLA. His career includes work at the Lockheed Martin Skunk Works for DARPA and NASA on the SR-71 Blackbird, an M-5 Methane Penetrator, a supersonic stealth STOVL fi ghter, the JASSM missile, Aerocraft, and the Quiet Supersonic Platform (QSP) program. He has holds several design patents for hybrid airships as well as a vehicle patent for the JASSM missile.
Фрагмент сдвоенной мотогондолы, попяченный с secretprojects.uk
Три вида. Поперечное сечение и дельта с наплывом явно идут от "Дрозда"
"Какова семантика этого безобразия?"
"Но технические редакторы - люди простые, а потому обычно пишут о бренности бытия"

Вот понять бы еще, как именно нужно балансировать дерево при движении и возникновении/удалении частиц внутри. Но это уже отдельная история. А пока лучше докрутить интерфейс и выложить в гитхабчег.
P.S.
VS LiveServer очень удобен для поднятия минималистичного локалхоста. Рекомендую там, где есть минимальная структура из mjs, но нет нужды поднимать монстров из node.http или express.
Досадно, что минорные, едва заметные визуалы вроде полярного сияния у самого горизонта на Лейте или отсветов грозы сквозь разрывы облаков в верхних слоях атмосферы Джула сложно уловить в тот момент, когда они особенно красивы. Да, в системе Джула нет He3, но там есть другой ценнейший ресурс - залипание.
Прибытие
Посадочный катер в плотных слоях атмосферы
Возвращение к кораблю-носителю
Пример - содержательная и приятная статья про квадрево(Кресты, но я без напряга перевел на родной жабоскрипт)
P.S.
Итоговый переходом от древа к плоскому массиву - это шаг вперед относительно остальных найденных реализаций этой же структуры
Причем не то, чтобы совсем уж фатально, но вот как вытянуть последние 300м/с дельты, когда уже все выжато из почтенного АЛ-31Ф, в который еще и пришлось плеснуть холодной воды
Заменил еще один шкаф после ремонтного погрома и уже в самом конце сборки осознал, что установил несколько панелей недекорированным опилочно-фанерным торцом к конечному пользователю.
Ну потому что панелька почти симметрична, а единственное нарушение симметрии - наличие декора только с фронтальной стороны, которое после нескольких часов с отверткой в зубах уходит из фокуса внимания. Так что теперь нужно разжиться лаком и закрыть этот косяк
А именно - стартап является организацией, которая получает кратковременное преимущество через вынос энтропии в будущее
Например, можно отказаться от документации и очень неплохо выиграть на скорости внедрения фичей, потому что ТЗ на фичи согласуется по мере их реализации
Или отказаться от обсуждения и проектирования архитектуры, заменив ее копипастой компонентов с их минорной доработкой. За счет чего успеть по срокам и вкатиться в IPO. Никто ведь не смотрит под капот.
Но потом начинается долгосрочный период, и с кодом нужно знакомить как новых сотрудников, так и олдам вспоминать, а зачем в функции X прокидывается параметр Y. Причем документация - это не только отчеты (их все равно читают только в самых экстремальных ситуациях). Документацией здорового человека может быть упоминание в коммите номера задачи в таск-трекере или подробный и соответствующий спеке JSDoc.
А копипаст компонентов выстреливает…ну, например, раздуванием базы кода и необходимостью одновременно вносить точечные правки сразу во все связанные модули.
Выводы - а ничего нового. Рефактор неизбежен, люди, утверждающие, что "надо сразу писать годный код" идут фпень, т.к критерии жизнеспособности кода на разных этапах проекта различаются диаметрально, документация нужна, но есть множество способов реализовать ее куда более годно и содержательно, чем писать отчет, который обязательно оценят
А выглядит очаг как-то так:
Это вторая страница. Всего страниц виртуальной библиотеки - четыре, и одна страница упоительней другой.
Нет, я отправил на рекомендацию в библиотеку угодный Омниссии "Мифический человеко-месяц", но что делать с людьми, которые
Временный вариант до расчистки второго экструдера - перекинуть всю печать на первый экструдер и затянуть второй наверх, чтобы он не царапал заготовку.
К примеру, достаточно plain-text описания над каждым полем интерфейса( тип/енам тоже сойдут) *.ts в комментарии произвольной длины
/** это описание интерфейса */
interface SomeInterface {
/** это описание поля интерфейса */
someInterfaceField1: FieldType
/** это описание еще одного поля интерфейса */
someInterfaceField2: FieldType
}
чтобы они вылезали в подсказках VSCode.
Аналогично работает описание входных параметров и выходов функции в JSDoc, которое тоже переходит в подробную подсказку.