



Команда разработки частично ушла в простой, частично уволилась. Технического директора за адекватность, независимость и строптивость сокращают.
Топчики (исполнительный и его замы) так и не смогли выпросить себе бюджет, который бы позволил им не урезать свои интересы, пожертвовав только простыми исполнителями, а для того, чтобы получить этот бюджет, пусть и урезанный вот прям здесь и прям сейчас, им нужно подниматься на уровень если не Темнейшего, то максимально близких к нему лиц и открытым текстом заявить, что проект профакаплен (спойлер - никто это делать не хочет, потому что признание в своей профнепригодности чревато показательной поркой).
А мы вдогонку подкинули им обращение в прокуратуру, трудовую инспекцию и полсотни индивидуальных исков за невыплату з/п. Вряд ли мы добьемся всей компенсации, но каждая наша жалоба хотя бы немного увеличивает вероятность, что после разгрома нашего проекта дивные люди из топ-менеджмента Энциклопедии перейдут не в следующую уютную синекуру, а в старшие помощники младшего черпальщика бригады ассенизаторов при холерных бараках.
У меня сегодня удаленка (на которой я пишу документацию для будущих поколений, если вдруг кто-то будет разгребать наше творение), завтра я ухожу в простой по отсутствию оплаты, а в понедельник увольняюсь из этого шапито.
Принцип прост - вместо того, чтобы вытягивать всю топологию целевой модели из стартового дефолтного куба, сначала отдельными элементами накидать ключевые объемы и компоненты, после чего - через булевы операторы или даже Ctrl+J
Ну и построение потока моделирования по цепочке: базовые контуры→функциональные подробности→детали и декорации
На основе сабжа решил накидать восьмиосник, не сильно вдаваясь пока в детали. Думаю, МЗКТ бы мог такое скрафтить, бггг

Поскольку для страницы, собранной целиком из статики, всякие node.http и express будут излишними, и городить под капотом полноценный сервер с обработчиками месседжей на порт только ради отладки - неоправданный головняк.
Причастиццо сабжу
Таска - починить битую солнечную панель на спутнике. Орбита у спутника малость уродливая и с достаточно высоким наклонением, но в остальном - семечки.
Грузим в отсек ССТО ремонтник ( топливный бак, ЖРД, капсула на два рыла с термощитом)+ попутную нагрузку (спутник-сканер до Минмуса).
Выходим на НКО, отправляем сканер в транзит до Минмуса, ремонтник - на перехват поломки, выравниваем скорости и обнаруживаем, что панель на самом деле - целая, только свернутая. Так что или отменять квест и терпеть издержки финансов и репутации, или…
Отправляем инженера в открытый космос, разгоняемся на ранцевой установке до ~ 10 м/с относительно кандидата в ремонт и крошим тушкой панель на куски. Теперь валидная цель для ремонта есть. Вытаскиваем ремкомплект, штопаем, возвращаемся на корабль, делаем ретропрожиг и ждем входа в плотные слои атмосферы. Mission completed.
Ленивый вариант с деструктивным моделлингом - запилить нужный элемент, правильно запозиционировать его относительно центра массива и наложить поверх Spin, далее отрегулировать количество копий. Но резалт будет набором обычных точек, и изменение в одном экземпляре не оттранслируется на все сразу. Боль и страдание.
Но есть комба из инстансинга, обычного массива и деформа, с которой можно отзывчиво править родительский инстанс, чтобы правки отражались во всех элементах массива.
- Рисуем рутовый инстанс того объекта, из которого будем строить массив
- Создаем самую обычную плоскость, уменьшаем так, чтобы не мозолила глаза (нормаль к плоскости определит ориентацию дочернего объекта)
- Через Ctrl+P цепляем объект дочерним узлом к плоскости. В родительском узле выбираем Instancing→Faces
- Создаем кривую→круг, на плоскость вешаем массив, после массива - деформацию по кривой

Сабж в действии. Ступенька осевого компрессора с лопатками ротора в рабочем и зафлюгированном положении
Итого:
- получено 3 активных оффера
- актуализированы требования к должности разработчика-фронта на 2к24
- удалось очертить собственный грейд и понять, в кого дальше эволюционировать
- Стало ясно, какие технологии нужно еще осознать (Docker, nodeJs-http (это нативка), nodeJs-express (а это уже либа с улицы), React)
- Асинхронка (воркеры/треды/кластеры) - это действительно важно и востребовано
А теперь мне нужно восстановиться после всего этого нервяка, так что йа начну с музыкальной паузы
Можно уже не страдать по
JSON.parse(JSON.stringify(жертва клонирования))
. Потому что есть structuredClone
, делающий то же самое без лишней возни с преобразованием в строки и обратным парсингом.Но любопытства ради я бы посоветовал написать рекурсивный клонировщик (учтем, что ссылочные данные - не только объекты, но и массивы)
А у меня через полчаса очередной собес
Я не понимаю одного - почему людей так расстраивает, что вместо предложения взять позицию лида я настаиваю на позиции пусть и топового, но линейного разраба. Да, я эволюционировал до миддла+, но у меня не было опыта поднятия большого проекта с нуля соло (или в позиции руководителя команды). Сеньором-помидором я тоже пока себя не считаю.
Потому что ИМХО для этого недостаточно быть просто технически прошаренным и знать про каждую функцию и тип данных в жабоскрипте. Нужно именно что собрать большой и сложный проект с нуля своими руками (ладно, иногда - обращаясь к коллегам за отдельными компонентами, чтобы распараллелить выполнение и успеть в срок)
И я сдохну, если именно это будет ждать меня на новом рабочем месте. С нуля, без должного понимания процессов в смежных командах.
Не говоря о том, что я и так живу с постоянным ощущением "а что, если я незаметно для всех накосячил, и близится
На текущем уровне развития я не хочу отвечать ни за кого, кроме самого себя. Потому что рано или поздно налажаю и подставлю не только себя, но и всех, кто на меня положился. Я хочу тихо закапываться во все более сложный и низкоуровневый код, считать разные классные и сложные штуки, визуализировать их. Но я не хочу руководить, уберите от меня шапку Мономаха. Я не готов на такую позицию, пусть даже по части технических скиллов у меня достаточно компетенции
"Крик души" mode OFF
P.S.
Всем спасибо, я проорался

Единственная фича - гибрид Vue3 и Vuex. Зачем - непонятно (ну кроме как способа на практике убедиться, что pinia компактнее и выразительнее)
А еще пробесил дизайн, в котором неизвестный автор вовсю юзает размеры то кратные 4, то 5, то 3 (один паддинг в 12пикс, другой в 25). Модульная сетка - нет, не слышали?
Нецелые размеры в отступах и высотах строк тоже "доставили"
И устанавливает непосредственный контроль
Тут онй еще йуный, но характер уже виден
Кот напоминает о важности регулярного отдыха
Кот доминирует
Кот дуркует
P.S.
У жывтоне есть забавная привычка затаиваться и издавать протяжный вопль, словно оно прекращается в страшных корчах и доходит. Когда к коту прибегают помочь, тот выпрыгивает из засады, распялив лапы, после чего убегает, издавая дребезжащие звуки
Все-таки Vuex, каким бы чудесным не казался, стал реликтом хотя бы из-за отсутствия поддержки TS "из коробки". Есть способ решить эту проблему закидыванием в рутовую директорию проекта вот такого заклинания под именем vuex.d.ts:
declare module "vuex" {
export * from "vuex/types/index.d.ts";
export * from "vuex/types/helpers.d.ts";
export * from "vuex/types/logger.d.ts";
export * from "vuex/types/vue.d.ts";
}
А еще - тяжеловесность и отсутствие встроенных способов превращения полей стора в реактивные переменные - только явно через ref/computed.
история смешная штука. Если только ты, вот именно ты, не живешь прям щас в ней. Но потомки посмеются, обещаю.
ПЗДЦ
- Очень много вопросов по асинхронке. Принцип работы
async/await
и его связь с промисами. Все сорта воркеров - WebWorkers, threadWorkers. Иногда спрашивают про вебсокеты - Как следствие - могут быть вопросы на EventLoop. Ключевой момент -
setTimeout/setInterval/requestAnimationFrame
исполняются в самом конце EventLoop, и между вызовом макротаски и запуском связанного с ней кода есть промежуток, в котором возможны манипуляции с DOM - Любые слова о нативке - это только начало диалога. Упор всегда будет идти на TypeScript про интерфейсы, перечисления, кастомные типы и т.д.
- Вакханалия фреймворков, бушевавшая в 2к16 - 2к19, утихла. Остались Angular (с кучей легаси из кровавого интерпрайза начала 10-ых), React (король горы, был очень популярен на рынке, первым смог в SSR) и Vue (особенно Vue3). Есть впечатление, что Vue потихоньку одолевает React, а значит, что еще в 2к18 я сделал правильный выбор
- Flux-архитектура. Не суть важно, Vuex, Pinia, Redux или еще что-то подобное.
- Тестовые задачи. Внешне грозно, по факту - таск-трекер или интерактивный календарчег с хранением данных в localStorage или JSON, который тянут через fetch. Простенький store и пара компонентов на инпуты прилагаются. Главное - не впасть в раж, не начать упарываться по фичам, а вместо этого трезвым взглядом посмотреть на мелкие баги
P.S.
Два оффера, но один в Сколково, и до рабочего места мне тащиться 2 часа. Моя тематика, хорошие деньги и очень приятное впечатление от команды. Но после пары месяцев там я из человека превращусь в микросервис. Второй ближе к дому. По деньгам послабее, но зато у меня будет время после работы еще пожить. Задача - набрать достаточно альтернатив, все взвесить и к середине апреля сделать выбор. Ну и попутно подучиваю React. Может потребоваться.