Давно ничего не моделил, да и в целом - делал лично по своим хотелкам и интересам. На горизонте наметился один мини-ресерч, а для него иллюстрация. Мелочь, а после долгого затишья приятно вспомнить практику.
"И если ты не заполнишь заявление на отпуск, то тебе предстоит признать себя виновным перед самим собой и в знак искупления укусить себя за жопу" P.S. Второй этап зачтен, на очереди глава по роутеру и навгардам
Завершаю домашку по второму этапу курсов, перебиваю локальные стейты с пробросом через пропсы на redux (точнее - redux-toolkit, потому что "родной" редукс очень многословен) В процессе понял, что на первом этапе меня вымораживал даже не сам реакт, а, скорее, та система хранения данных с локальными стейтами, прокидкой методов(методов, Карл!) через пропсы и отсутствием внятной точки отсчета.
И что в моем понимании основа веб-приложения - это его структура данных. Flux с заданным стейтом и набором экшнов, остальное - просто отражение изначальной структуры на интерфейс. Иногда - простой вывод текста, иногда - нечто хитрое и динамическое. Но вторичное по отношению к тем данным, которые обитают в стейте
Тем, что для подключения глобального стейта нужно отдельно прописать имена вызываемых событий, отдельно замапить к кажому событию обработчик, потом из этого безобразия отдельно собрать инстанса стора, затем не забыть обернуть нужный кусок приложения в Provider, а затем в каждом отдельном компоненте сделать mapStateToProps/mapDispatchToProps. А потом - обернуть полученный компонент в отдельный connect.
Тогда как в Pinia можно в одном файле описать стейт, как методы стейта - события, а потом через экспорт функции запуска хранилища use<Имя сущности, описанной в сторе>Store или обращаться к нужным полям и экшнам напрямую, или обернуть в storeToRefs. И будет всем щастье.
Сначала ты соглашаешься вдогонку подправить .yml с конфигами деплоя продукта на испытательный стенд. И сам не замечаешь, как в dockerfile-е кидаешь chmod на очередной непонятный шелльник
Ну чо, с очередным возвращением в роль многорукого Шивы.
Да, это было достаточно дорого, но это инфа, по своей форме подачи максимально приближенная к практическим задачам и опирающаяся на ±актуальные техтребования.
Да, есть странные позиции вроде использования CRA там, где нужен Vite, но вероятно, что авторы учебных материалов перенесли на него свой опыт ежедневной борьбы с легаси. Это анахронизм, но он есть в существующем коде, и мы привыкли к нему. Позиция досадная, но вполне объяснимая.
А теперь - дождаться итоговых резалтов проверки.
Также - немного субъективного. Разделение отображения, структуры и поведения, говорили они. А потом - jsx, где можно в заголовке импортнуть стили (причем в лучшем духе css-in-js в виде объекта, заботливо свернутого Babel из исходного *.module.js), вернуть немного html-разметки в теле функции и продолжить нарушать все ранее озвученные принципы разделения. В этом ключе Реакт с одной стороны куда более гибкий, чем Vue, но и возможностей качественно прострелить себе коленку в нем больше
Баян-версия Astronomia вызывает смутные ассоциации со старичком Дагги Пирсом, известного рода розовыми облаками, символами Солнца и прочими omens, которыми хочешь-не хочешь этот season наполнен по самые жабры. Такие дела.
Насчет реактовских курсов. useMemo - это же близнец вьюшного computed со все тем же механизмом кэширования резалта до момента, когда обновятся входящие в зависимость переменные. А разговоров то было… Но есть надежда сегодня полностью добить все задачи по первому этапу курса и оставить 6-ть дней на практическое задание. P.S. Ментальная усталость существует, а те, кто считает выгорание зумерской блажью, пусть возьмут долгий и сложный проект, начнут его с нуля, защитят и выкатят в эксплуатацию, а потом столкнутся со сменой руководства, которое уволит своих предшественников и открыто заявит, что у них нет планов дольше, чем на неделю вперед, но они всерьез намерены спустя "год" и "туман войны и неизвестности" поднять выручку проекта в 10 раз.
Я не преувеличиваю, есличо, от приступа истерического смеха (на фоне закрутившейся в межушном нервном (очень) ганглии пейсни кальсонных гномов) меня в тот момент спасло состояние кромешного ахуя от того, что из моей команды исключили двух ключевых участников, которые закрывали и тесты, и дизайн, и общение с заказчиком.
Оценил еще одно дивное слово, передающее нюансы разных ментальных состояний и переходов между ними. Отлетевший Там не просто исказилась связь с реальностью, но ее порвало, после чего сознание отправилось летать снаружи всех измерений.
К вопросу о курсах. Зачем create-react-app, если есть Vite, который умеет делать все то же самое, но намного более гибко и с возможностью работы с нативкой или Vue? Ладно, будем считать, что нас морально готовят к погружению в пучины легаси P.S. Единственный плюс в том, что он из коробки поднимает девсервер на православном 3000-ом порту. Бгггг
Двигаюсь по реакту. Реакт кажется жертвой эволюционного развития, который сначала был просто средством для превращения джсонов в верстку, а затем постепенно оброс управлением стейта, хуками и прочими тентаклями. В результате чего useEffect (местный аналог вьюшного watch) превратился в триединую сущность. Если в useEffect прокинуть переменную, то он будет вести себя как нормальный, здоровый вотчер и запускать коллбек на изменение отслеживаемой переменной.
А если пробросить пустой массив - то коллбек выстрелит на маунте компонента в тело страницы (импровизированный componentDidMount/onBeforeMount). Но на этом чудеса не заканчиваются. Если внутри коллбека возвращать функцию, то эта функция будет запускаться на демонтаж компонента (как componentDidUnmount/onUnmounted).
Работает - да. Компактно - да. Интуитивно понятно - ну такоэ (почти как алоэ, каланхоэ и никакоэ). Но поскольку с вакансиями сейчас тухло, а реактовых вакансий ощутимо больше, чем вьюшных, то я догрызу этот кактус до конца и попрошу добавки.
Товарищи(на самом деле - нетЪ)—гэмблеры оказались завзятыми схематозниками и поставили еще до техсобеса вопрос ребром - готов ли я оформлять ИП прежде, чем напрошусь к ним в ректальную кабалу. К сожалению, намерение урвать клок шерсти с паршивой овцы в виде техсобеса так и не выстрелило. Судя по реакции их кадровика, техническая адекватность кандидата им не слишком интересна, важнее готовность без лишних раздумий вписываться в любой блудняк. Обидно, досадно, но ладно.
По итогу обсуждения с Йа.ГПТ стало ясно, что скилл написания сопроводительных писем у меня пока хромает. Вывод - запрячь славных роботов на тренировку написания типовых документов в пределах одобряемого шаблона. Пусть будут частью моего камуфляжа под "нормального, здорового человека". +ждем фидбек компаний, в которые я уже запустил сопроводы.
Из плюсов - удаленный режим в сочетании с хаотической ситуацией после увольнения предыдущего начальства позволяет в перерывах между рабочими задачами проходить упражнения с Йа.Практикума.
Начались первые отклики. Приглашают в "разработку решений для гэмблинга и беттинга" (ну т.е сфера деятельности, которая в моем понимании вообще не должна существовать, а занимающиеся подобным люди должны быть поражены в правах и ограничены в трудовой деятельности ремеслом свинопаса или старшего помощника младшего черпальщика).
Ладно, сказать свое "фе" и аккуратно завернуть "по этическим соображениям" я этих существ успею всегда, а вот пособеситься на тему React лишним не будет. Мертвый сезон уже заканчивается, и нужно понять, что изучать в первую очередь. Upd Судя по отзывам сотрудников - еще та шарашкина контора
Мало что может сравняться с удовольствием от того, что мошка, еще ранним утром попавшая в глаз и предательски заползшая под веко перед тем, как окончательно издохнуть, этот глаз покинула.
Практическая часть задания гномонов Начало, этап блокаута С точки зрения правдоподобности вопросы (где РАДИАТОРЫ?, например), но зато дальше пойдет разработка интерьера, а в эту тему я еще не погружался. + По программе курса будут декали, которые я пока даже палочкой не тыкал
прилетела мини-халтурка на печать деталей к аквариуму. Вывод - если не уверены, то не печатайте HIPS-ом. У него хреновая адгезия, высокие рабочие температуры, чувствительность к малейшему чиху и выделение токсичного говна при нагреве. А печатайте лучше PETG или PLA.
Успел записать утром сон. Я оказался на нашей даче во Владимирской области, где нужно было нейтрализовать особый грибной яд. В концентрированном виде - убивает, в более разбавленном - калечит до глубокой инвалидности. Добывался он из особой породы синюшно-серых опят, намазывался на дверные ручки, дротики духового ружья и т.д. А магия состояла в том, что сила яда напрямую зависела от существования того пня, с которого были сняты грибы для изготовления отравы.
Если пень с наросшими грибами сжечь - яд потеряет свою силу, а вызванные им повреждения частично регенерируют. Так что всю ночь(по локальному времени сна) мы вместе с С. косплеили клип Spellbound с той разницей, что носились по лесу не просто так, а с целью поиска пня, из которого изготовили отраву для неизвестной в реале дальней родственницы, про которую мы знали лишь то, что ей 18, и она в реанимации.
А теперь тот самый робат из предыдущего псто. Основа - гибкий пилотируемый (но с достаточно мощной бортовой ИИ-шницей) аппарат для работы в 0g или относительно низкогравитационных средах. Гибкий - в том плане, что способен своими силами сменить орбиту и перейти с орбиты базирования на орбиту сборки/на станцию базирования.
Также - на уровне конструкции способен цеплять разные целевые модули - сварочный факел-плазмогенертор, рой "печатников" (мелкие роботы с чаном быстрозатвердевающего пластика и печатными соплами), емкость с полимером, вспомогательные катушки с армирующий волокном/проволокой и дополнительные лапки для плетения конструкций.
Для длительных перегонов - подвесные топливные баки и баллоны с водой и кислородом для СЖО.
Двигло - металоксовые ЖРД (4 маршевых + много мелких маневровых), энергия от топливных элементов с керамическими электродами + страховочная солнечная панель.
Поначалу была идея дать робату насекомые лапки из множества сегментов, но это такой сервис-головняк, что оставим эту опцию для более кастомных вариантов. + Чем больше суставов - тем больше вероятность, что в сильно запыленной обстановке они забьются и деградируют (Луна - жестокая хозяйка, ога).
Зато на итоговом варианте ручек две пары - одна для тягания сорокафутовых контейнеров и перемещения гиббон-стайл, вторая - для отвертывания гаек, доступа к сервисным люкам и прочей тонкой деятельности.
Аналогично с пихлом - вариант с движком, который работает на термоядерной (низконейтронные реакции с бором?) горелке и в космосе (согревая воду из топливных баков), и в атмосфере (прогревая засасываемый с улицы воздух), пока кажется мне слишком футуристичным. Как прототип [ДАННЫЕ УДАЛЕНЫ] - пойдет, но не как массовая рабочая лошадка. А для базового варианта - понятный металокс, не требующий ни (о)нанотехнологий, ни многотонного свинцового биощита Вариант—α Вариант—β
Подумалось для несуществующей игрушки - симулятора партизанского движения в космосе (ближнее внеземелье до гало-орбиты): -«мобильная оперативная группа "Дремлющие за Ахеронтом"» Никакого скрытого смысла, просто занятный образ Upd. Придумалось. мониторят нелегальную активность в поясе астероидов, в т.ч. использование астероидов с прикрученными движками в террористических целях.
Вариант - умеренных габаритов булыга с шахтой, набором субкилотонных спецзарядов для смещения орбиты "Орион-стайл" и вынесенными вокруг булыги на ферменных подпорках маскирующих листов.