Записи с темой: горбота (25)
00:21

Ваша Всратость
Возможный способ поиска потенциальных рейсконов - в девтулзах выставить профиль со скоростью, заниженной до <500кБит/с.

Так сегодня удалось поймать "гонку" между запросом на получение профиля организации сотрудника и запросом на правила перевозок, этим сотрудником выставленные (последний использует ограничения на доступ к прогнозам, которые даются не только лишь всем)

@темы: горбота, кодерастия

22:26

Ваша Всратость
У меня есть стойкое ощущение, что некоторые люди из моего профокружения натурально говорят по скриптам. Или по чату-GPT. Одни и те же эмодзи (да, в письменной речи, тем более - деловой, они меня риальне выбешивают) "взлетающей ракеты" или "большого пальца вверх", одни и те же фразы "мы очень постарались, показали хороший результат в сжатые сроки, но нам предстоят новые вызовы". Бесит. Причем на глубоком, слабо поддающемуся рефлексии уровне.

С башкой у них вызовы.

@темы: горбота

22:39

Ваша Всратость
+ быть мной - тебе доверяют решение всратых задач
- быть мной - от тебя жду решения вот этих-самых всратых задач. А иногда - даже объяснения

@темы: горбота

22:36

Ваша Всратость
Из обнаруженного опытным путем.
Корневой компонент App.vue и точка монтирования main.ts/index.ts обычно выстреливают последними. Если нужно на самом запуске SPA, еще до авторизации и запроса разных служебных данных (словари, например) получить состояние среды, лучше отвести для этого отдельный модуль, который только и делает, что цепляет из внешнего источника (cookie, get-параметры и т.д) нужные параметры.

И импортить его в тех местах, где эти параметры применяются. (После 9-и часов плодоношения скудоумием до меня дошло, что тут срабатывает такой паттерн предание старины глубокой как Singleton). По принципу

environmentStore = {key1: val1, key2: val2..., isReady: false }

initStore() {
if (environmentStore.isReady) return;
// Вот взяли и откуда надо прочитали параметры любым известным способом
environmentStore.isReady = true;
}

getKey(key) {
if (!environmentStore.isReady) initStore()
return environmentStore[key]
}


@темы: горбота, кодерастия

20:23

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

Предыстория:
Собственного железа у нас нет, хотя по факту мы считаемся полноценной IT-компанией, так что все наши службы обитают в облаке на виртуалках. Бюджетно, масштабируемо. Пока облако живет и не болеет.
Факты:
- Прошлый четверг, в самом конце рабочего дня неожиданно падает доступ к корпоративному GitLab. Пятница. Утро. День Наташи. Лежит все, начиная с корпоративного ВПН.

- Первая версия - умерший носитель. Вторая, итоговая - атака шифрованием. Потому что вместе с нами отрыгнуло еще несколько крутившихся на том же облаке контор.

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

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

Вынужденное бездействие решили заполнить написанием документации и оптимизацией. Узнал про возможность тащить рабочую папку в ноде через process.cwd(), заодно живьем оценил возможность разбивать конечную сборку Vite на чанки, используя не прямую ссылку на компонент, а () =>import('путь к компоненту')


@темы: горбота

11:49

Ваша Всратость
И еще один редфлаг при найме (а заодно - повод для меня преодолеть социофобию и в следующий раз навестить офис потенциального нанимателя)

Компания нанимает большую часть линейных разрабов из старшекурсников/аспирантов. Потому что опыта для сравнения и оценки нет, но зато есть готовность перерабатывать и воспринимать средние (местами - и ниже рыночных) условия как должное, а дополнительную мотивацию можно создать, отправив эту (о)поросль в бар после очередного релиза

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

Текущий проект - компромисс. Не самая интересная тематика, но я определил архитектуру клиентского приложения, освоил и задействовал graphQL(с нюансами вроде автогенерации, склеивания серии запросов/мутаций и динамическими подписками через WebSocket), работаю со связкой svg + Vue (динамические графики, подхват новых данных по axios и отображение инфы по мере ее поступления). И сама тематика - оптимизация транспортных возможностей намного интереснее, чем создание и обслуживание очередной унылой онлайн-торговой сети.

Досадно, что вся эта система работает по критерию "максимизировать прибыль управляющих логистических компаний", а не "минимизировать расход топлива и износ транспортной матчасти", но тут "не мы такие, а жЫзньсистема производственных отношений такая". Есть и более паскудные задачи, которые я не стану брать из принципа, даже если работодатель - полностью белый и легальный.

Всем спасибо, я надушнился.



@темы: нытье, горбота

01:41

Ваша Всратость
1. Определенно, нужно было экспериментировать с печатью на рафте раньше. Большой стабилизирующий потенциал, который в 90% случаев должен окупать риск перепечатки всей заготовки с нуля

2. Попробовал специализированный клей-спрей для печати на базе водорастворимых компаундов в ИПС-е.

3. Скорее теоретическое из купленной под НГ книги о приемах аддитивного изготовления. Способы печати, в которых вместе с наслоением материала в слой вклеиваются армирующие волокна. Похоже на задел для профессиональных машин, которые ставят на серьезное производство (и которые стоят как моя зп за год)

4. Мыльница. Ну т.е. обычная пластиковая мыльница для обычного мыла. В качестве теста для п1. и п2.

5. А еще было просто приятно залезть в Блендер и по фану замоделлить там эту несчастную мыльницу

6. Завтра (ну т.е сегодня) и послезавтра - дежурство. Так себе удовольствие, но я автор и должен отвечать за свое творение. Ну и вдруг кто-то найдет креативный способ заставить нашу систему войти в расколбас и флаттер, бггг.

@темы: горбота, nanolathing

01:14

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

1 день дежурства закрыт, еще 2 осталось.


@темы: горбота

21:38

Ваша Всратость
Сегодня забавно оговорился при обсуждении функционала на нашей системе контроля перевозок - "а подсказка должна появиться только в том случае, если клиент не поместится в отведенную для него ячейку"

@темы: горбота, ступор мозговины

22:52

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

И да, люди правда различаются.
Если мне ожидание фейла помогает собраться после первичного шока (ну потому что надвигающийся факап нужно встречать с подготовкой, достоинством и чувством юмора), то некоторых моих коллег такое нервирует.

В конце дня принял волевое решение пробакланить вечер и отправиться домой максимально долгим маршрутом. Смотреть, как все завалило снегом, который все равно растает в предновогоднюю оттепель, и слушать годный эмбиэнт Place where black stars hang. А вот думать влом.


@темы: бытовуха, горбота

21:10

Ваша Всратость
Наш бэкенд классный.
Придумать менять id/primary_key сущности после любой операции обновления - это надо еще постараться. Причем как сама операция правки сущности реализована - отдельная песня. Мы не будем просто менять старые поля, заполняя их новыми значениями. Нет, мы создадим новый элемент, скопируем в него поля из старого, затем обновим актуальными значениями, а старый элемент удалим.

Благо, что и до этого момента я вовсю пользовался временными id(которые сам и генерил на клиенте) для склеивания нескольких мутаций GQL в один запрос (там нужно обеспечить уникальность каждой уезжающей пачки исходных данных, как в этом примере). Так вот, теперь эти временные id пригодились для опознания телрезультатов обращений к бэку.

@темы: горбота, кодерастия

01:53

Ваша Всратость
Кстате, я тут осознал, чем меня так раздражает взаимодействие с отделом дизайна (причем не зависит от конторы)

А это склонность игнорить заведомо неблагоприятные сценарии, которые они начинают отрисовывать лишь после того, как ты намекнешь им, что: пользователь может сидеть с нестандартного и/или устаревшего устройства, вводить заведомо неправильные исходные данные (причем нестандартным способом), а связь тупо сбоит, и вместо "ваш запрос успешно отработан" пользователь получает [ДАННЫЕ УДАЛ...р`Пръхуэо Фнгхннх!!!Иа!Иа!]

@темы: бытовуха, горбота

23:24

Ваша Всратость

Решил не очень масштабную, но концептуально интересную задачу.

Есть большое SPA-приложение, в нем идет обмен данными под грибамиgraphQL. Проблема - graphQL разросшийся, и без подсветки синтаксиса непонятно, какое поле что значит, откуда берется и какого типа данными запитывается.

Но ладно, пишем под каждую схему конфиг (поначалу хотелось сгрести все двумя регулярками - одну под схемы другую под клиентские описания запросов/фрагментов/мутаций, но VSCode-graphQL начал путаться и просить, чтобы ему явно дали соответствие "схема-описание").

А потом мне вдруг было видение, что этот же конфиг подходит и для недавно восстановленного скрипта автогенерации (через либу graphql-codegen.js) типов и запросов.

Чтобы была уверенность, что одни и те же схемы вытаскиваются из одних и тех же путей, а также есть возможность адресно обновлять не все схемы разом, а прицельно - только одну, по имени.

А концептуально здесь прикольно то, что я написал конфиг(json с маппингом схема→адрес для скачивания схемы→документы для схемы) для конфига graphql.config.json, который генерирует описания типов typeScript(*.d.ts, что тоже конфиг в своем роде ). Потому что нужно увеличивать глубину рекурсии. И делать это рекурсивно.



@темы: горбота, кодерастия

00:01

Ваша Всратость
Если в коде что-то закомментировано, то неспроста.

Одной из первых задачек на новом месте стало восстановление системы оповещений об обновлении нашего ПО для логистов. Принцип прост - на клиенте молотит service-worker, кэширует активные скрипты и ЦСС, при необходимости загружает и кэширует актуальные. Само собой, поскольку у нас все стильно-модно-молодежно, то воркер не самописный, а автосгенеренный через либу vite-plugin-pwa.

Первый этап восстановления был прост и прямолинеен - раскомментировать заглушенный 2 года назад компонент, который показывает приглашение обновиться, затем уточнить конфиг vite и немного изменить вызываемые функции vite-plugin-pwa. Потому что как оказалось в процессе, мы юзали уже давно deprecated-методы.

И поначалу все было хорошо, на тестовых стендах появлялись всплывашки, приложение обновлялось, но когда дело дошло до установки на прод, то начались чудеса. Иногда. Не всегда и не у всех, но плагин начал вести себя (в)с(т)ранно. Где-то он делал вид, что не может вытянуть скрипт или стили с 404 (анализ нетворка показывал, что он пытается загрузить уже неактуальный скрипт из предыдущей версии, который по имени из-за автоподставляемого хэша не соответствовал актуальному), где-то страница просто не перезагружалась после клика по кнопке "обновить" и запуска якобы обновляющей функции, которую предоставляет vite-plugin-pwa.

И "не у всех" и "не всегда". Приложением пользуется ~ 50 человек. Траблы возникали суммарно у ~ 4-5 человек от общего числа. Каждый день - у разных юзеров. На тестовых стендах ошибка тоже ведет себя как "плавающая". Кстати, гипотеза с тем, что проблему вызывает конфликт имени из-за автосгенеренного хэша, тоже не подтвердилась. И я начинаю понимать человека, который закомментировал эту фичу. Возможно, придется в обход писать самописный воркер (благо, вайт-плагин-пва позволяет отказаться от автогенерящегося варианта). Возможно, придется вообще решать эту задачу не через воркер, а через комбинацию localStorage и...ну сопоставление версии, прокидываемой в package.json и той, что у юзера в ЛС сидит.

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

@темы: горбота, кодерастия

00:12

Ваша Всратость
Первые впечатления:
-- Проект меньше, чем я ожидал. Но также хаотичнее. Компоненты в 2.7к строк напрашиваются, чтобы их распилили на части, совпадающий функционал вынесли в отдельные утилиты и словари, что-то извлекли в максимально тупые атомарные компоненты и т.д. Промолчу про реликтовые вкрапления optionsApi в конструкциях третьей Vue. При том, что часть компонентов уже опирается на compositionApi.
-- Кроме меня в проекте только один фронт. Работы у меня будет много, и велика вероятность, что мы в четыре руки будем превращать эту анархию в работоспособное, целостное по виду и структуре приложение. А возможно, что и соло. Но этого я и хотел.


@темы: горбота

12:57

Ваша Всратость
Добби официально свободен. Еще три дня отдыха, и пора приступать к работе на логистов.
Если мне повезет, я не налажаю - со временем меня пустят в RnD проекта беспилотных перевозок.
Так что будем стараться.

@темы: бытовуха, горбота

Ваша Всратость
Текущий раунд поиска завершен. 3 недели суммарно, из которых 1 неделя ушла на раскачку и подъем резюме, 2 - на актуальные собесы. Выбор почти очевиден, осталось формальное согласие и подчистка на предыдущем месте. Да, там сейчас катастрофа, но задачи должны быть завершены.
Итого:

  1. получено 3 активных оффера

  2. актуализированы требования к должности разработчика-фронта на 2к24

  3. удалось очертить собственный грейд и понять, в кого дальше эволюционировать

  4. Стало ясно, какие технологии нужно еще осознать (Docker, nodeJs-http (это нативка), nodeJs-express (а это уже либа с улицы), React)

  5. Асинхронка (воркеры/треды/кластеры) - это действительно важно и востребовано


А теперь мне нужно восстановиться после всего этого нервяка, так что йа начну с музыкальной паузы




@темы: дискотека, горбота, кодерастия

Ваша Всратость

  1. Очень много вопросов по асинхронке. Принцип работы async/await и его связь с промисами. Все сорта воркеров - WebWorkers, threadWorkers. Иногда спрашивают про вебсокеты

  2. Как следствие - могут быть вопросы на EventLoop. Ключевой момент - setTimeout/setInterval/requestAnimationFrame исполняются в самом конце EventLoop, и между вызовом макротаски и запуском связанного с ней кода есть промежуток, в котором возможны манипуляции с DOM

  3. Любые слова о нативке - это только начало диалога. Упор всегда будет идти на TypeScript про интерфейсы, перечисления, кастомные типы и т.д.

  4. Вакханалия фреймворков, бушевавшая в 2к16 - 2к19, утихла. Остались Angular (с кучей легаси из кровавого интерпрайза начала 10-ых), React (король горы, был очень популярен на рынке, первым смог в SSR) и Vue (особенно Vue3). Есть впечатление, что Vue потихоньку одолевает React, а значит, что еще в 2к18 я сделал правильный выбор

  5. Flux-архитектура. Не суть важно, Vuex, Pinia, Redux или еще что-то подобное.

  6. Тестовые задачи. Внешне грозно, по факту - таск-трекер или интерактивный календарчег с хранением данных в localStorage или JSON, который тянут через fetch. Простенький store и пара компонентов на инпуты прилагаются. Главное - не впасть в раж, не начать упарываться по фичам, а вместо этого трезвым взглядом посмотреть на мелкие баги


P.S.

Два оффера, но один в Сколково, и до рабочего места мне тащиться 2 часа. Моя тематика, хорошие деньги и очень приятное впечатление от команды. Но после пары месяцев там я из человека превращусь в микросервис. Второй ближе к дому. По деньгам послабее, но зато у меня будет время после работы еще пожить. Задача - набрать достаточно альтернатив, все взвесить и к середине апреля сделать выбор. Ну и попутно подучиваю React. Может потребоваться.



@темы: бытовуха, горбота, кодерастия

21:29

Ваша Всратость
Технособес, проведенный в прошлую пятницу - Ок
Тестовое задание за выходные в еще одну контору - Ок, завтра собес
Еще два собеса в эту пятницу, но тут главное дотянуть и не поехать
Не ок - то, что после каждого ляпа, в.т.ч. тупо из-за усталости/потери концентрации у меня начинается мысленная жвачка уровня "гроб-гроб-пидор-кладбище-страшная смерть от наркотиков", которая еще сильнее усугубляет расслоение мозжечка. Надо учиться бороться со Сквернойстрессом.

P.S.
У нас сократили ТехДира и не оплачивают услуги ЦОД, на котором крутятся виртуальные машины. Если дальше ничего не изменится, то в середине апреля у нас не будет редакторского комплекса.

@темы: хроники пиздеца, горбота

Ваша Всратость
Кратко о том, чего мы добились на работе.

Не могу представить, какой именно эффект возымеет наше обращение, но я надеюсь, что кому-то придется присесть на Бутылку Правосудия.

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

А новых спецов, пусть даже зеленых и неопытных, а потому со скромными зарплатными ожиданиями нам нанимать НИЗЯ. Наша команда станет нежизнеспособной + ничто не гарантирует, что нас не продолжат срезать по людям и деньгам. Так что Screw you, guys, я сваливаю в мае - июне.

Похоже, что мой параноидальный (почему-то мой вангометр особенно хорошо улавливает эманации ожидаемого пиздеца) прогноз, в котором нас громят и замещают 5-10 серьезными ребятами, которые будут решать вопросы, засылать человечков и обкашливать дела. Работать эти ребята будут за наш суммарный прайс (а также будут хорошими дружбанами еще более серьезных ребят из МинЦифры).

И вряд ли они будут марать свои руки презренным кодом - для этого за условные 70к/пачку дошика будут наняты студенты-практиканты и камикадзе из системных интеграторов (они же - "галеры").

Наш проект убит.

P.S.

Один собес пройден (практика 4/4 (примеры с очень всратеньким кодом, когда я спросил, почему дают такоэ - то лид ответил, что так они фильтруют всех, кто боится неожиданных сценариев и малоиспользуемых/устаревших технологий), в теории рассказал про порядок рендера тегов в документе, понятия контекста функции, но засыпался с местом рендера DOM внутри EventLoop). В пятницу - следующий.




@темы: горбота