Ну что, год подходит к концу. Новых собесов я не жду. Старые, я думаю, что тоже не воскреснут.
Два с половиной месяца я в активном поиске. Но сейчас думаю, что не совсем активном, а просто в открытом поиске.
Что по моим наблюдениям и результатам получилось
Об этом ниже
А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Разбор частых ошибок и задачи по накопительной сумме уже в канале. Присоединяйся!
В этом посте писала о том какие показатели HH озвучивает на текущий момент.
Из моих наблюдений:
вакансии есть
хороших вакансий - меньше
прозрачности - ещё меньше
1.Череда собесов, которые дошли до оффера (если что, то за 2,5 месяца у меня только один оффер)
Домен - финтех, направление - казначейство, из озвученной задачи - переписать текущее решение, перейти на новый стек, уйти от монолита к микросервисам, интеграция источников
Собеседования прошли нормально. По деньгам - дали верх вилки. Я уже мысленно вышла на работу.
И тут нюанс.
Оказывается:
оформление не в компанию
а через аутсорс
при этом на всех этапах собеседований не было ни одного человека из аутсорса
Вообще. Ни разу.
Возникает логичный вопрос: 👉 эта компания вообще знает, что я у них буду работать?
Дальше - ещё интереснее:
договор «срочный, но как бы бессрочный»
формулировка: «завершение договора зависит от завершающего этапа проекта»
если заказчик решает закрыть проект - 3–4 дня, и компания вправе завершить трудовые отношения
Юридически - всё аккуратно. По факту - никакой стабильности.
Ну, неприятный осадочек у меня остался из-за того, что изначально озвучивали устройство в штат. На этапах подтверждали, что бюджет под проект согласован, штатные единицы утверждены. И только в самом оффере информация, что устройство в другую компанию. И даже hr не вкурсе этого.
2.Загадочный звонок и рекрутер-фрилансер
Звонок. Представление - максимально невнятное.
- Ваше резюме понравилось, возможно, вам подойдёт вакансия.
Я прошу ещё раз представиться и объяснить:
кто вы
от какой компании
это инхаус или агентство
Выясняется:
это физлицо
работает «сама на себя»
ищет кандидатов, чтобы случился мэтч с командой
Я прошу рассказать:
что за компания
что за проект
Ответ:
Я не могу назвать компанию из-за NDA. Вам скажут на техническом интервью.
Я честно пытаюсь понять: — Как я могу подготовиться к мэтчу, если не знаю, что за компания и чем они вообще живут?
В итоге:
перешли к цифрам
по вилке не сошлись
на этом всё закончилось
3.Хороший собес, плохое состояние и кошка Люся Афферистка
Аутсорсинговая компания:
проекты в финтехе
оформление в штат аутсорса
ТК РФ
договор не срочный
Назначают техническое интервью. Я готовлюсь, повторяю, освежаю знания.
Но.
Вечером накануне:
я занимаюсь малярными работами на объекте
грунтовка, штукатурка, усталость лютая
в тот период я жила у брата
А у брата появилась кошка. Люся. Афферистка. Ориентал. С таким голосом, что и врагу не пожелаешь.
Я приезжаю домой в час ночи, валюсь с ног, хочу уснуть. А Люсе нужно играть. Она бегает, скачет, орёт. Спать не даёт.
На утро:
я невыспавшаяся
уставшая
подключаюсь к собеседованию
И вот парадокс: 👉 это был самый адекватный технический собес из всех.
Спрашивали:
строго по вакансии
всё по делу
без цирка и лишних "угадай, что я думаю"
Но я:
туплю
медленно соображаю
словарный запас - ниже плинтуса
В итоге - не дотянула. И здесь я поняла, что если ты не выспался, заболел или что-то пошло не по плану, то лучше попросить перенести собеседование.
4.Техническое интервью без техники
Компания делает ПО для миграционной службы. По описанию - аналитик, но по факту им нужен BI-специалист.
Техническое интервью. И… мы просто разговариваем.
про мой опыт
про компании
про проекты
Первые 20 минут - класс, комфортно. Потом я начинаю смотреть на время и думать:
- А где задачи? - Где SQL? - Где хоть что-нибудь техническое?
Ничего. Ни кода. Ни задач. Ни кейсов.
После этого собеса - обратной связи не было вообще.
Вот такие 4 блока пока могу выделить из моего опыта конца 2025 года.
Ну а свой канал На связи: SQL я веду, чтобы делиться кейсами, делится основами, обсуждать задачки, очевидные и неочевидные ситуации. Подписывайся!
А пока подписывайся на мой каналНа связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Разбор частых ошибок и задачи по накопительной сумме уже в канале. Присоединяйся!
Если коротко то: UPDATE - это команда для изменения значений в строках. Таблица остаётся той же самой, структура не меняется - меняются только данные.
Базовый синтаксис:
UPDATE table_name
SET column = value
WHERE condition;
SET — что именно меняем
WHERE — какие строки
UPDATE:
может блокировать строки
работает внутри транзакции
откатывается через ROLLBACK
Что же такое ALTER TABLE?
ALTER - это команда для изменения структуры таблицы:
добавить столбец
удалить столбец
изменить тип данных
переименовать столбец
По-простому:
ALTER — это «переделать бланк», а не вписать новые данные.
Базовый синтаксис:
ALTER TABLE table_name
ACTION;
Где ACTION — это то, что ты делаешь со структурой.
Самые частые варианты ALTER
➕ Добавить столбец
ALTER TABLE users
ADD COLUMN age INT;
✏️ Переименовать столбец
ALTER TABLE users
RENAME COLUMN name TO full_name;
🔄 Изменить тип данных
ALTER TABLE users
ALTER COLUMN age TYPE BIGINT;
❌ Удалить столбец
ALTER TABLE users
DROP COLUMN age;
Пример из жизни
Раньше ты не хранила возраст пользователей. Потом бизнес сказал: «Нужно».
В прошлый раз рассказывала про накопительную сумму. Ссылка на пост вот тут.
Сегодня поговорим про скользящее окно.
А пока подписывайся на мой каналНа связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Разбор частых ошибок и задачи по накопительной сумме уже в канале. Присоединяйся!
Running total ≠ Rolling window
Running total — накопительная сумма. Это сумма всего, что было до текущего момента включительно. Она никогда не уменьшается, если нет отрицательных значений.
Где используется
общий доход с начала месяца / года
накопленные регистрации
рост базы пользователей
прогресс выполнения плана
📌 Это метрика «накопления», а не «динамики»
Rolling window — скользящее окно
Rolling window считает сумму (или среднее) только за последние N дней / строк.
Старые данные выпадают из окна.
Какой вопрос она отвечает
Что происходит прямо сейчас, в последние N дней?
Пример запроса с использованием Rolling window в SQL
SELECT
date,
sales,
SUM(sales) OVER (
ORDER BY date
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS rolling_7_days
FROM sales;
Самое важное для разбора - это строка ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
В этой строке и появляется Rolling window
Разберём буквально:
ROWS 👉 окно считается по количеству строк, а не по датам
6 PRECEDING 👉 взять 6 строк до текущей
CURRENT ROW 👉 включить текущую строку
В итоге окно = 7 строк
6 предыдущих + текущая = 7 строк
Важно понимать: 📌 Не 7 дней. 📌 Не календарная неделя. 📌 А именно 7 строк в отсортированном наборе. Сортировка идет по ORDER BY date
Когда использовать что
Running total, если:
считаешь прогресс
строишь cumulative-графики
важно «сколько всего»
Rolling window, если:
ищешь тренд
сглаживаешь шум
сравниваешь периоды
Ну а в моем канале На связи SQL тебя будут ждать задачи на скользящее окно. Кейсы с использованием ROWS и RANGE. Как сделать реальные 7 дней, а не 7 строк. Использование rolling-метрик в BI инструментах. Подписывайся!
На выходных было скучно, поэтому, в качестве интеллектуально развлечения, решил написать Python скрипт для перевода и озвучки видео с помощью локальных ML-моделей. Результатом работы скрипта является звуковая дорожка с переводом. Для демонстрации перевел видео новостей SpaceX результат Вы можете видеть ниже.
Код выложил на GitHub'е, скрипт можно запускать как приложение на ПК. А если интересны технические подробности, то они доступны в статье на Хабре. Переводить видео на русский можно с любого (человеческого) языка, скрипт не использует внешние API для перевода и озвучки, а только локальные модели – которые загружаются автоматически при первом запуске приложения.
Мне показалось что в последнем посте Logistics_Analyzer "Что если?" и новые функции программы мною не до конца был раскрыт вообще весь смысл анализатора "Что если?", а так же данные были очень корявые и не точные. Сегодня я постараюсь объяснить более детально, наглядно и заодно расскажу о новой функции.
Для начала начнем с данных. Я переработал все данные, создал более грубую но работоспособную модель тестовых значений для программы. Ушел от глобализации на всей карте, в сторону "Меньше объектов, один город, при этом более верные данные".
Новая карта объектов:
Текущая заливка данных, один город и 34 объекта
Сама карта — та же самая, что и была ранее, просто вместо 118 объектов теперь их всего 34, и собраны в одном городе.
Всем объектам была присвоена одинаковая товарная матрица и примерно одинаковые продажи, разница только в том, что один магазин, например, продавал «Сковороды» и у него этот сегмент А, другой продавал холодильники, которые так же попадают в А сегмент, но сковороды у него в С.
Зон доставок я сделал 5 вариантов, т. е. одинаковые зоны будут у 6 объектов, но это не критично, даже хорошо для проведения анализа.
Основной объект который будет разобран в сегодняшнем обзоре
Возьмем за пример объект с кодом ST_MSK_004 (магазин «Таганская»).
У него есть своя зона доставок, которая сложилась исторически.
Историческая зона доставок
Примерно так видит зону доставок логист
Мемом выше можно понять, что зона не оптимизирована. Почему этот 004 магазин доставляет в зоны где тоже есть магазины? Загадка, а впрочем, и нет. Это же тест-данные. Я предположил, что, например, есть один объект, у которого каким-то странным образом падала основная часть доставок, и он отдавал сам курьерку. При этом магазин стал слишком мало приносить прибыли, и аренда взлетела, надо закрыть его.
Переработанное окно анализа "Что если"
Немного переработал интерфейс, дизайн, добавил новые функции и пока что заглушки для будущих умных расчетов.
Выбираем объект 004, ставим учитывать ABC-анализ и анализировать влияние на доставку клиентам и запускаем расчет.
Самое долгое - это влияние на зонирование
Пока грузиться процесс, опишу что такое "Влияние на доставку".
У компании Х есть магазин, который они хотят закрыть, надо понять визуально, какое покрытие и кому отдать кусок от «пирога». Вот это как раз и делает программа. И в этом процессе закрылась основная проблема, с которой я долго боролся, на скрине выше, где показана зона, есть маленькие зеленые точки, это исторические данные, куда были произведены отправки. На их основе программа и строит полигональную сетку для визуализации. А как быть с пустыми местами? Вот она, основная проблема. Чуть позже вернемся к этому.
Как раз расчет завершен, предлагаю посмотреть труды.
Окно товарных запасов
Окно товарных запасов - визуально на табличном примере показываем фактический остаток товара в магазине
Ближайшие объекты
Ближайшие объекты - показывает то куда можно переместить товар, какое расстояние, емкость и доступность
План перераспределения
План перераспределения — это уже предлагаемые распределения остатков с закрываемого объекта на ближайшие по следующей логике:
Проверяем товарную матрицу
Проводим АВС анализ (в будущем добавлю и XYZ)
Проверяем вместимость нового объекта
Если не подошло ни под одно действие, либо проверяем все найденные объекты в зоне, либо отправляем на склад, чуть-чуть логики с логов программы ниже:
Логи наверное скажут все за меня и гораздо больше)
Стоимость доставок
Стоимость доставок - вообще должна считать по объему утилизации трака, сейчас как бы тоже (со скрипом) живой вариант, но есть уже накиданная логика, лежит под фичатоглом, надо проверять в будущем.
Влияние на регион - ничего интересного там нету, кейс без особенностей, программа говорит что все отлично
И вот она, та самая "Вишенка" на торте - влияние на доставку
Рассмотрим два типа карт: общая информация и данные о влиянии на время.
Информация о влиянии на время, как считает программа:
Смотрит 3 точки из текущей зоны доставки по закрываемому объекту:
Самая дальняя точка по километражу
Средняя точка
Ближняя точка 2. Считает время от объекта до каждой из этих точек и берет среднее арифметическое значение
Кластеризует текущую зону на подзоны для новых объектов и делает аналогичное, как в пункте 1+2, добавляя среднее по всем объектам.
Визуализация перераспределения зон доставки
Нажимая на "Синюю" кнопку открывается окно в котором при нажатии на пуск - происходит визуализация перераспределения зоны с учетом объектов и введенных параметров (Учет объектов вне зоны км). Состоит данный процесс из 5ти этапов.
Показываем закрываемый объект
2. Показываем все объекты которые находятся внутри текущей зоны и внешние согласно параметра.
3. Показываем фактическую зону доставок
4. Делим зоны на кластеры. И вот тут самое интересное.
Минимальное приближение
Среднее приближение
Как сказать программе: «Смотри, есть вот такая зона, в ней есть 10, 15 или 20 объектов, подели рисунок на пропорциональные части с учетом оптимальной логистики?» А ведь внутри родительского кластера есть пустые зоны, в которых исторически не было доставок, а мы все равно должны их учесть и распределить.
Долго я думал над этим процессом, множество раз переписывал код, удалял методы. Вроде работают, но программа не понимает, что я хочу от нее. Ну не может она разделить без вершин пустые зоны.
И я придумал. В один вечер я сидел в какой-то компьютерной игре и ставил метки на карте, тут меня и осенило. Добавить больше точек, но не реальных, не исторических, а виртуальные точки для наполнения родительского кластера. Сделать их невидимыми для пользователя, но видимыми для логики программы. Так получается, мы устраняем эти пробелы, и метод начинает определять зоны, при этом делая этот процесс с большей точностью.
Мы находим в начале объекты и рядом с объектами начинаем раскидывать точки с определенной плотностью.
Дальше мы показываем окончательный процесс (распределения кластеров и привязку их к другим объектам).
На примере одного из кластера. Есть магазин на Павелецкой, есть зона которая перейдет к нему.
Отдаляем карту и чисто визуально мы понимаем, да кластеризация прошла успешно.
Красным написано "Маг" т.е. "Магазин" что бы более наглядно было
Внешние магазины рядом с контуром
Да и отдаленные магазины тоже правильно подхватили кластеры.
Какой же экстаз я словил когда руками проверил и убедился в том что да, все работает как и задумано. Как минимум этот процесс автоматизирован. Не надо теперь руками все это считать, собирать карты по крупицам. Работа которая занимает неделю а то и две может быть выполнена за 1 минуту. Это успех.
На моменте первой визуализации я думал: «Это успех», и лучше уже ничего не добавлять. Но потом пришла мысль, маленькая мысль, которая не давала покоя: «А что, если кому-то этого мало, а если надо показать визуально маршруты, точки из расчета?». Имея готовый скрипт JS и логику, мне просто потребовалось скопировать, вставить и дополнить первоначальный код.
Процесс анимирования занимает гораздо больше времени. Программе надо отправить API запрос, получить ответ, так для каждого объекта по 3 раза.
2025-12-15 16:08:02,800 - INFO - STDOUT - 🌍 Построение маршрута через OSRM (карта: yandex)
2025-12-15 16:08:02,800 - INFO - STDOUT - 🌐 OSRM API: попытка 1/2
2025-12-15 16:08:03,675 - INFO - STDOUT - ✅ Маршрут через OSRM: 0.9 км, 2 мин
2025-12-15 16:08:03,675 - INFO - STDOUT - ✅ Зона 21 добавлена: 1 маршрутов, 10 точек полигона
2025-12-15 16:08:03,675 - INFO - STDOUT - 🔍 Обработка зоны 22: facility=True, polygon=9, points=0
2025-12-15 16:08:03,675 - INFO - STDOUT - ⚠️ Зона 22: нет точек доставки, добавляем без маршрутов
2025-12-15 16:08:03,675 - INFO - STDOUT - ✅ Зона 22 добавлена: 0 маршрутов, 9 точек полигона
2025-12-15 16:08:03,675 - INFO - STDOUT - 🔍 Обработка зоны 23: facility=True, polygon=13, points=0
2025-12-15 16:08:03,675 - INFO - STDOUT - ⚠️ Зона 23: нет точек доставки, добавляем без маршрутов
2025-12-15 16:08:03,675 - INFO - STDOUT - ✅ Зона 23 добавлена: 0 маршрутов, 13 точек полигона
2025-12-15 16:08:03,675 - INFO - STDOUT - 🔍 Обработка зоны 24: facility=True, polygon=10, points=5
Лог работы построения маршрута.
Logistics_Analyzer - умеет работать с геодекодированием, но маршруты - извольте, я даже не знаю как их строить. Интересно было бы посмотреть как создается логика построения маршрута под капотом.
Итог:
Мы получаем кластер с тремя ключевыми точками и путями до них, включая полное описание маршрутов.
На третьем этапе программа последовательно демонстрирует каждый новый кластер и прокладывает маршруты (к сожалению, из-за ограничений медиа, я не могу приложить изображения).
Давайте подведем итоги кластеризации и перераспределения зон.
На мой взгляд, это успех. Конечно, есть некоторые недочеты, но они едва заметны и будут быстро исправлены. Логика работы выстроена, отчет динамичен. Теперь остается только проверить все на практике и собрать для него ОС от пользователей.
Есть план развития дальше, плюс устранение мелких недочетов. Первую бету версию планирую компилировать в начале марта 26г. Кому ее предлагать - это уже другой вопрос. Буду решать в момент возникновения.
В интерфейсе произошли некоторые изменения. Например, я перешел от скучной бежевой темы к более темным цветам. Часть стилей выделил в QSS и настроил их подключение в Main_window. Меню дашбордов стало напоминать Power BI с Excel, и были внесены другие мелкие правки.
Работаю над проектом по вечерам, уделяя этому 2-3 часа. Основные алгоритмы визуализации были написаны давно, но я долго не мог понять, в чем проблема. То данные распределялись неверно, то пробелы не учитывались. В начале реализации функции был у меня дата-файл, где зоны были более реалистичными, чем сейчас. При перераспределении их покрытие составляло всего 30%. То что "Ну очевидно можно сделать вот так" она делала "Тебе очевидно, а мне нет. Хочешь - делай сам".
Всем спасибо за прочтение. Пишите комментарии кто и что думает. Задавайте вопросы - отвечу)
Зумеры думают, что быть эмоциональным в чатах и документах на работе — это уникально.
Нет. Предыдущие поколения тоже выплёскивали эмоции.
Но кто сразу переключался на язык фактов — эти люди сделали карьеру, построили успешные компании, их идеи доходили до цели, а не терялись в бурном потоке.
Зумеры же используют новые каналы как реку эмоций: чаты, документацию, таски — поток бурлит, волнует, захлёстывает смысл.
И это их погубит.
Есть компании, которые не берут зумеров, потому что не хотят превращать рабочие инструменты в психотерапию.
Тот, кто понимает простую вещь:
поток эмоций = река хаоса,
канал фактов = дамба, структура, русло,
понижение энтропии = управление потоком = рост по карьерной лестнице,
— тот становится архитектором реки, получает доверие, решения принимаются быстрее, ошибки падают, а продвижение приходит раньше, чем у остальных.
Эмоции в работе нужны. Но не там, где решаются задачи.
Если хочешь строить карьеру — превращай бурный поток в канал. Поток оставь на вечер, другу или собаке.
Лаборатория 3D Сочи запускает открытый проект для всех, кто хочет творить, исследовать и учить! Мы создаем библиотеку 3D моделей познавательных механизмов для учебных стендов в школах и вузах.
Суть проекта: Создать рабочую и технологичную 3D модель кинематического механизма (например, как в прикрепленном видео или подобного) для образовательных целей.
Кому это интересно?
· Студентам и школьникам, знакомым с 3D моделированием (формат STL).
· Семьям — отличный повод для совместного проекта детей и родителей.
· Всем энтузиастам 3D печати, кто хочет, чтобы их творение принесло практическую пользу образованию.
Что нужно сделать?
1. Смоделировать механизм в любой 3D программе.
2. Подготовить к печати с минимумом поддержек (а если без них и работает — вы гений и наш лидер!).
3. Прислать нам:
· Файл модели (STL).
· 2-3 скриншота процесса моделирования или слайсинга с вашими короткими комментариями (как вы решали сложные моменты).
· Пояснения по работе механизма (это важно для учебных целей!).
· Видео сборки/работы модели — приветствуется!
· Можно с логотипом или авторской подписью, а можно участвовать анонимно.
Технический бонус: Все модели будут физически распечатаны на FDM-принтерах (Elegoo, Picasso, Anycubic, Bambulab), чтобы проверить их в реальности.
Что получите вы?
· Авторы лучших моделей будут отмечены в наших публикациях.
· Все работы будут представлены в фото- и видеоформате с указанием авторства (если не анонимно) в группе Лаборатории 3D Сочи (https://vk.com/sochi3d)
· Трансляция лучших работ на информационном канале #СочиВКультуре.
· Участие в создании реального образовательного контента!
Главный критерий — познавательность! Чем нагляднее, интереснее и технологичнее будет ваша модель и пояснения к ней, тем лучше.
Давайте вместе наполним лаборатории и классы умными механизмами!
Если досмотрел до сюда, то пожалуйста для статистики нажми плюс если будешь участвовать и минус если не примешь участие. Этот пост не для количества плюсов, а для подсчета реальной статистики, так что ставьте плюс или минус честно