Мало кто понимает, что OR — ленивый оператор, который проверяет условия слева направо и останавливается на первом истинном.
Звучит как оптимизация, но может сыграть злую шутку, если этого не знать.
Как работает ленивое вычисление?
Когда Python или SQL видит OR, он работает так:
• Проверяет первое условие слева
• Если оно истинно — возвращает результат и останавливается
• Если ложно — идёт проверять второе условие
Простыми словами: как только нашёл хоть одну правду — всё, дальше не смотрит. Это экономит ресурсы, но может пропустить важную логику.
Пример проблемы в Python:
Представим: мы проверяем пользователя — есть ли у него права админа или он прошёл дополнительную проверку безопасности.
def is_admin(user):
print("Проверяем права админа")
return user == 'admin'
def security_check(user):
print("Запускаем проверку безопасности")
# Тут могла быть запись в лог, отправка в аналитику и т.д.
return True
# Проверяем пользователя
user = 'admin'
access = is_admin(user) or security_check(user)
print(f"Доступ: {access}")
Вывод:
Проверяем права админа
Доступ: True
Проблема: Функция security_check() вообще не запустилась. Python увидел, что is_admin() вернул True, и дальше не пошёл. А там могла быть важная логика — запись в лог, отправка метрики, валидация. Всё это пропустилось из-за особенности работы оператора OR.
Пример проблемы в SQL:
Представим таблицу users с миллионом записей. Хотим найти пользователей, которые либо из Москвы, либо потратили больше 100 тысяч рублей.
SELECT
user_id,
city,
total_spent
FROM users
WHERE
1=1
AND (calculate_total_spent(user_id) > 100000 -- Тяжёлая функция
OR city = 'Moscow');
Проблема: Функция calculate_total_spent() очень дорогая — считает сумму по всем заказам пользователя. Если поставить её первой, она будет вычисляться для каждой строки. А если бы мы поставили city = 'Moscow' первым — для москвичей функция могла бы не считаться.
Важно: В SQL такая логика оператора OR не гарантирована стандартом. PostgreSQL и другие СУБД могут переставить условия или выполнить их параллельно. Оптимизатор сам решает, в каком порядке проверять.
Итог:
Оператор OR останавливается на первом истинном условии. В Python это гарантировано и работает всегда. В SQL — не гарантировано, оптимизатор может переставить условия.
Обучаю АНАЛитике и Провожу консультации (подробности здесь):
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20🐳3❤🔥2 1
Слышал от многих, что на hh.ru нужно отправлять по 50+ откликов в день и даже скрипты для этого пишут.
Но давайте честно: массовые отклики — это ,большая потеря энергии. Лучше точечно находить компании, где действительно хочется работать.
Разберёмся пошагово, как это делать правильно.
Возьмите ручку и листок (или заметки в телефоне — не важно) и напишите, что для вас критично:
• Выдача техники (MacBook, монитор)
• Наличие IT-аккредитации у компании
• Конкретные технологии: SQL, Python, Superset, Redash, А/Б-тесты
• Полная удалёнка или гибрид
• ДМС и другие плюшки
Большинство ищет просто «аналитик данных» — и получает сотни нерелевантных вакансий.
А можно искать точечно, используя логические операторы прямо в строке поиска hh.ru.
Пример запроса:
Python AND Superset
Вернёт только те вакансии, где упоминаются оба инструмента.
Ещё круче:
SQL AND Python AND (ДМС OR удалённо)
Найдёт вакансии, где обязательно есть SQL и Python, плюс либо ДМС, либо удалёнка.
Это работает как WHERE в SQL — комбинируйте условия под себя.
Нашли интересную вакансию — не отправляйте просто резюме.
Напишите короткое сопроводительное письмо:
• Приветствие
• Почему вам интересна эта вакансия (технологии, продукт, команда)
• Какой релевантный опыт у вас есть
• Контакты для связи
• И т.д.
Это займёт 10 минут, но выделит вас среди сотни откликов с пустым полем.
Даже крутое сопроводительное не спасёт, если резюме составлено плохо.
Обновляйте его регулярно — это поднимает его в поиске у работодателей.
Если нужна помощь с составлением резюме / сопроводительного — можете обратиться ко мне @catdem, помогу разобраться.
Полный список c чем я могу помочь — mentor.dima-sqlit.ru
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥20🔥16🐳10 2
Начнем сразу с ТОП 3 поста по реакциям:
Для тех кто вкатывается в IT (Аналитика данных), серия постов про бесплатные материалы:
ТОП 5 - Полезных постов по моему мнению:
@dima_sqlit
#winter #winter2025 #итогигода #итоги2025 #christmas #NY #newyear
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤🔥14 7
🔮 2026 год: чего ждать? Мой взгляд и ключевые тренды
Друзья, всем привет.
Первый пост в этом году решил написать о том, что реально будет важно в 2026 году.
Мы живём во времени, когда объём информации растёт экспоненциально.
И главный навык — уметь отфильтровывать важное от шума.
Раньше можно было:
• распыляться
• залипать в мемы
• учить всё подряд “понемногу”
Сейчас это становится слишком дорогой роскошью.
🤔 Почему фокус внимания — ключевой навык:
Раньше люди могли быть докторами наук сразу в нескольких областях.
Это было возможно, потому что объём знаний был ограничен.
Сегодня:
• каждая область перегружена информацией
• поверхностные знания почти ничего не стоят
• распыление = потеря времени и результата
2026 — это время точечного развития.
🧠 Когнитивные искажения — скрытый фактор 2026:
Когда информации становится слишком много, мозг начинает упрощать реальность, чтобы сэкономить энергию.
Он делает это неосознанно — через шаблоны и короткие пути мышления.
Эти систематические ошибки мышления и называются когнитивными искажениями.
Проще говоря:
👉 мозг не ищет истину, он ищет быстрое и удобное объяснение.
Почему это становится особенно важным в 2026:
• вокруг больше информации, чем мы способны переварить
• ИИ генерирует правдоподобные, но не всегда верные ответы
• маркетинг давит сильнее, чем факты
• решения нужно принимать быстрее
В такой среде именно когнитивные искажения:
• заставляют верить в хайп
• мешают учиться глубоко
• ломают фокус
• приводят к плохим карьерным и финансовым решениям
Примеры:
• эффект якорения — когда первое услышанное число/мнение сильно влияет на все последующие решения
• окно Овертона — когда через инфошум и многоразового повторения “нормализуют” то, что раньше казалось не мыслимым
• выученная беспомощность — когда человек перестаёт что-то менять (если предыдущий опыт был негативным), даже если может
Понимание этих механизмов напрямую влияет на:
• то, как вы учитесь
• какие решения принимаете
• кому и чему доверяете
• как зарабатываете деньги
Именно поэтому я планирую отдельную серию постов про когнитивные искажения — без заумных терминов, с примерами из работы и жизни.
🤖 Что по поводу ИИ (AI):
ИИ — полезный инструмент, но вокруг него сейчас не обосновано много "хайпа".
Что ИИ реально умеет:
• быстрее разобраться в теме
• быстрее сделать MVP / прототип
• быстрее написать код, SQL, аналитику
• быстрее накидать варианты решений
Если вы делаете серьёзный продукт, где важны:
• стабильность (чтобы не падал в проде)
• безопасность (доступы, уязвимости, данные)
• производительность (чтобы система быстро работала под нагрузкой)
• качество (минимум багов, поддерживаемость, тесты)
ИИ не сделает это за вас.
LLM — это модели, которые предсказывают ответ с определенной вероятностью, а не “думают”.
Без вашей проверки они легко ошибаются.
Маркетинга вокруг ИИ сейчас больше, чем реальной магии.
Используйте AI как ускоритель, а не как замену мышления.
💰 Почему ИИ хайпят из каждого утюга
Причина банальная — деньги.
• в ИИ влиты десятки миллиардов долларов
• инвесторам нужно показать рост и “будущее”
• рынку нужно верить, что «в этот раз всё точно окупится»
Поэтому:
• ИИ продают как магию
• сложности и ограничения замалчивают
• успехи масштабируют, провалы игнорируют
Это не заговор — это обычная экономика.
Итог:
🌟 Пересылайте друзьям и сохраняйте себе данный пост, чтобы не потерять.
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ Как вы видите 2026 год? Согласны ли с моими выводами?
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.
💎 Полный список c чем я могу помочь — mentor.dima-sqlit.ru
@dima_sqlit
Друзья, всем привет.
Первый пост в этом году решил написать о том, что реально будет важно в 2026 году.
Мы живём во времени, когда объём информации растёт экспоненциально.
И главный навык — уметь отфильтровывать важное от шума.
Раньше можно было:
• распыляться
• залипать в мемы
• учить всё подряд “понемногу”
Сейчас это становится слишком дорогой роскошью.
Раньше люди могли быть докторами наук сразу в нескольких областях.
Это было возможно, потому что объём знаний был ограничен.
Сегодня:
• каждая область перегружена информацией
• поверхностные знания почти ничего не стоят
• распыление = потеря времени и результата
2026 — это время точечного развития.
🧠 Когнитивные искажения — скрытый фактор 2026:
Когда информации становится слишком много, мозг начинает упрощать реальность, чтобы сэкономить энергию.
Он делает это неосознанно — через шаблоны и короткие пути мышления.
Эти систематические ошибки мышления и называются когнитивными искажениями.
Проще говоря:
👉 мозг не ищет истину, он ищет быстрое и удобное объяснение.
Почему это становится особенно важным в 2026:
• вокруг больше информации, чем мы способны переварить
• ИИ генерирует правдоподобные, но не всегда верные ответы
• маркетинг давит сильнее, чем факты
• решения нужно принимать быстрее
В такой среде именно когнитивные искажения:
• заставляют верить в хайп
• мешают учиться глубоко
• ломают фокус
• приводят к плохим карьерным и финансовым решениям
Примеры:
• эффект якорения — когда первое услышанное число/мнение сильно влияет на все последующие решения
• окно Овертона — когда через инфошум и многоразового повторения “нормализуют” то, что раньше казалось не мыслимым
• выученная беспомощность — когда человек перестаёт что-то менять (если предыдущий опыт был негативным), даже если может
Понимание этих механизмов напрямую влияет на:
• то, как вы учитесь
• какие решения принимаете
• кому и чему доверяете
• как зарабатываете деньги
Именно поэтому я планирую отдельную серию постов про когнитивные искажения — без заумных терминов, с примерами из работы и жизни.
🤖 Что по поводу ИИ (AI):
ИИ — полезный инструмент, но вокруг него сейчас не обосновано много "хайпа".
Что ИИ реально умеет:
• быстрее разобраться в теме
• быстрее сделать MVP / прототип
• быстрее написать код, SQL, аналитику
• быстрее накидать варианты решений
Если вы делаете серьёзный продукт, где важны:
• стабильность (чтобы не падал в проде)
• безопасность (доступы, уязвимости, данные)
• производительность (чтобы система быстро работала под нагрузкой)
• качество (минимум багов, поддерживаемость, тесты)
ИИ не сделает это за вас.
LLM — это модели, которые предсказывают ответ с определенной вероятностью, а не “думают”.
Без вашей проверки они легко ошибаются.
Маркетинга вокруг ИИ сейчас больше, чем реальной магии.
Используйте AI как ускоритель, а не как замену мышления.
💰 Почему ИИ хайпят из каждого утюга
Причина банальная — деньги.
• в ИИ влиты десятки миллиардов долларов
• инвесторам нужно показать рост и “будущее”
• рынку нужно верить, что «в этот раз всё точно окупится»
Поэтому:
• ИИ продают как магию
• сложности и ограничения замалчивают
• успехи масштабируют, провалы игнорируют
Это не заговор — это обычная экономика.
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥16🔥13 5 2 1 1
Друзья, всем привет.
Есть реальная возможность потестить Gemini 3 PRO в Business-версии абсолютно бесплатно на 30 дней — благодаря акции от Google.
Пошаговый план доступа:
1) Переходим по ссылке с акцией
2) Используем временную почту (если не хотим использовать свою), для этого я использовал вот этот сервис
3) Берем почту из пункта 2 и вводим ее на странице с акцией из пункта 1, далее вам придет на почту код верификации, вы его вводите и получаете доступ, все очень просто)
Какие проблемы могут быть:
• Из-за того, что это бесплатно и просто получить на эту подписку особо большая нагрузка, по этой причине ваши запросы могут долго висеть в очереди (я пробовал вчера ночью, все достаточно шустро работало)
• В любой момент подписка может быть деактивирована, так как это бесплатно, но я думаю это не беда, наше дело попробовать
• Если аккаунт будет сделан на основе временной почты, то скорее всего через 1-2 дня вас попросит пере зайти в аккаунт и вы уже не сможете в него войти, так как у вас не будет доступа к почте с которой вы регистрировали аккаунт
Итог:
@dima_sqlit
#gemini #ai #sql #python #dataanalytics #dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤🔥7🔥5🐳2
This media is not supported in your browser
VIEW IN TELEGRAM
Привет! В прошлых частях я рассказал про БАДы и про Менталку, на очереди спорт.
Прошлые части:
1) Про БАДы
2) Про Менталку
Начну с того, что я считаю, что все что мы делаем должно быть в кайф и должно иметь баланс, как в работе, как в отношениях, так и в спорте. По этой причине в плане спорта я нашел для себя упражнения, которые мне очень нравятся, которые можно выполнят почти везде и инвентарь для этого либо не нужен либо он минимальный, вот упражнения которые я очень люблю и стараюсь выполнять.
Мой топ 6 упражнений:
🔥Вот короткое видео с моими подтягиваниями вживую (смотрим прикрепленное видео).
Создал отдельный канал @dima_not_sqlit там будет life-контент:
Уже сейчас загрузил туда несколько видео где я занимаюсь спортом, заходим, ставим лайки, подписываемся, комментируем)
Итог:
Это база для меня, но мы все разные — ищите свои упражнения, чтобы шло в кайф. Пробуйте, экспериментируйте!
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤🔥12🐳7
Друзья, всем привет. Сегодня поговорим про два термина, которые звучат страшно, но на деле — это база для любого, кто пишет скрипты, DAG'и или собирает витрины данных.
Аналитики сейчас часто не только строят графики, но и сами настраивают сбор данных (например, в Airflow). И тут важно понимать два принципа, чтобы не получить дубли или кривые цифры в отчетах.
Звучит сложно, а суть простая:
Если мы скармливаем функции одни и те же данные на вход, она всегда должна возвращать один и тот же результат.
Детерминированный пример в SQL:
LOWER('Dima') — всегда вернет 'dima'
Это детерминировано.
Не детерминированный пример в SQL:
• NOW() или RANDOM() — каждый раз вернут разное значение, даже если вы ничего не меняли.
Почему это важно нам? Когда вы пишете расчет метрики, вы должны быть уверены: если вы запустите расчет сегодня, завтра или через год на тех же самых исходных данных — значения должны получиться одинаковые.
Это про то, что количество запусков скрипта не должно ломать данные.
Представьте ситуацию: Вы написали скрипт для DAG'а, который считает продажи за вчерашний день и кладет их в итоговую таблицу. Если скрипт упал на середине или вы случайно запустили его два раза подряд — что произойдет?
❌ Плохой сценарий (Не идемпотентно): Скрипт просто берет и вставляет данные (INSERT). Запустили два раза — данные задвоились. Отчет показывает выручку x2.
✅ Хороший сценарий (Идемпотентно): Скрипт написан так, что сколько его ни запускай, результат будет корректный.
Как это делается (Логика, которую нужно прописывать): Перед тем как загрузить данные за конкретную дату (например, за 15 января), мы сначала должны «почистить» место.
Алгоритм простой:
Сначала удаляем данные за эту дату:
DELETE FROM table WHERE date = '2026-01-15'
И только потом вставляем новые данные:
INSERT INTO table ...
Теперь, даже если вы перезапустите DAG 10 раз подряд, у вас не будет дублей. Скрипт сначала удалит старое, а потом запишет новое. В таблице всегда будут актуальные данные в единственном экземпляре.
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤🔥6 4 2
Друзья, всем привет. Многие, слышали понятие Асинхронность и думали: «Ну, это какая-то сложная идея, пожалуй обойду ее стороной»
На самом деле, вы используете принцип асинхронности каждый день в обычной жизни, даже не замечая этого. И понять его проще, чем кажется.
Представьте, что вы решили сварить суп. Вы поставили кастрюлю с водой на плиту. Вода закипит только через 10 минут.
Два варианта ваших действий:
❌ Синхронный подход (По очереди): Вы встаете напротив плиты и 10 минут пристально смотрите на воду. Вы не отвечаете на сообщения, не режете овощи, не листаете ленту. Вы полностью заблокированы ожиданием кипятка. Глупо? Глупо.
✅ Асинхронный подход (Эффективный): Пока вода греется, вы не ждете, а переключаетесь: чистите картошку, отвечаете в рабочем чате или читаете книгу. Как только вода закипела, вы возвращаетесь к кастрюле и закидываете мясо.
Суть простая: Вы не ждете завершения долгого процесса (нагрев воды), чтобы начать делать что-то другое. Это и есть асинхронность.
В программировании это работает точно так же. Представьте, что ваш скрипт или сайт — это кассир в магазине.
❌ Без асинхронности: Подходит покупатель и говорит: «Мне нужно узнать баланс карты» (это запрос в Базу Данных). База данных думает 5 секунд. В этом сценарии кассир просто замирает и ждет. Вся очередь за этим покупателем стоит. Сайт «висит», никто ничего не может купить, все злятся.
✅ С асинхронностью: Покупатель просит баланс. Кассир отправляет запрос в БД и, не дожидаясь ответа, сразу начинает обслуживать следующего человека! Он как бы говорит: «Я отправил запрос, пока ждем ответ — следующий!». Как только база данных "ответила", кассир на секунду возвращается к первому покупателю и говорит результат.
Один кассир успевает обслуживать сотни людей, просто эффективно используя время, пока система "думает".
🧠 Как применять это в жизни?
Этот принцип — отличный лайфхак для личной продуктивности. Мы часто теряем время в режимах пассивного ожидания (пока выгружается отчет, пока едет такси).
Как стать асинхронным:
• Запустили тяжелый SQL-запрос на 15 минут? Не сидите и не смотрите, как бежит полоска загрузки. Переключайтесь на мелкие задачи (ответить на почту, навести порядок в папках и т.д.).
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥10🐳6🔥5 3
🐍 Бесплатно изучаем ООП на Python: нужно ли это аналитику?
Слышал много споров на тему: «Нужно ли аналитику знать ООП (Объектно-Ориентированное Программирование) или можно обойтись без него?».
У меня эта тема давно висела в списке «хочу изучить», но руки не доходили. Я начинал проходить много курсов, но они мне не заходили: либо материал подавали слишком сложно, либо формат объяснения был скучным и непонятным.
🤨 Что я нашел:
Совсем недавно наткнулся на автора на Stepik, у которого куча бесплатных курсов с огромным количеством положительных отзывов. Решил попробовать и не пожалел.
Курсы по ООП (там две части) мне сильно понравились. Да, безусловно, там покрывается не 100% всех тонкостей ООП, но для бесплатных материалов — это одни из лучших курсов. Для базового понимания парадигмы — то, что нужно.
🤩 Важный нюанс:
Если вы не знаете базового Python, вам будет сложновато. Поэтому новичкам рекомендую сначала пройти базу. Я всегда и всем советую курсы «Поколение Python» (для начинающих и продвинутых) — это золотой стандарт.
🚬 Мой лайфхак:
Я зарегистрировался сразу на все бесплатные курсы этого автора. Почему стоит сделать так же? В перспективе курсы могут обновиться, улучшиться и стать платными. А если вы уже записаны — доступ останется у вас бесплатно.
Ссылки на курсы:
• ООП Часть 1
• ООП Часть 2
• Все курсы автора
Итог:🤩
🍸 Сохраняйте пост, чтобы не потерять ссылки на курсы.
❓ А как у вас отношения с ООП? Изучали или считаете лишним? Делитесь в комментариях!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.
🚬 Готовлю вас к собесам и пишу резюме здесь: mentor.dima-sqlit.ru
@dima_sqlit
Слышал много споров на тему: «Нужно ли аналитику знать ООП (Объектно-Ориентированное Программирование) или можно обойтись без него?».
У меня эта тема давно висела в списке «хочу изучить», но руки не доходили. Я начинал проходить много курсов, но они мне не заходили: либо материал подавали слишком сложно, либо формат объяснения был скучным и непонятным.
Совсем недавно наткнулся на автора на Stepik, у которого куча бесплатных курсов с огромным количеством положительных отзывов. Решил попробовать и не пожалел.
Курсы по ООП (там две части) мне сильно понравились. Да, безусловно, там покрывается не 100% всех тонкостей ООП, но для бесплатных материалов — это одни из лучших курсов. Для базового понимания парадигмы — то, что нужно.
Если вы не знаете базового Python, вам будет сложновато. Поэтому новичкам рекомендую сначала пройти базу. Я всегда и всем советую курсы «Поколение Python» (для начинающих и продвинутых) — это золотой стандарт.
Я зарегистрировался сразу на все бесплатные курсы этого автора. Почему стоит сделать так же? В перспективе курсы могут обновиться, улучшиться и стать платными. А если вы уже записаны — доступ останется у вас бесплатно.
Ссылки на курсы:
• ООП Часть 1
• ООП Часть 2
• Все курсы автора
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤🔥6🐳3
Увидел в соседнем канале разбор задач с собеседования в Магнит OMNI и одна задачка была не разобрана и она показалось мне очень интересной — решил разобрать ее здесь, думаю многим будет полезно.
Условия задачи (это секция на языке Python):
• Представим что вы пришли в кинотеатр зал которого состоит только из одного ряда.
• Вы хотите сидеть максимально далеко от других зрителей
• Напишите функцию которая принимает на вход список мест в виде 0/1 и возвращает расстояние от оптимального места до ближайшего соседа
• Гарантируется что есть свободные места и хотя бы один зритель
Пример того, как должна работать итоговая функция:
func([1, 0, 1]) == 0
func([1, 0, 0, 0, 0, 1]) == 1
func([1, 0, 0, 0, 0, 1, 0, 0, 0, 0]) == 3
func([0, 0, 0, 0, 0, 1, 0, 0, 0, 1]) == 4
Разбор задачи по шагам:
Я сразу покажу вам решение, чтобы мы его разобрали.
def func(seats):
occupied = [i for i, seat in enumerate(seats) if seat == 1]
best = []
for i, seat in enumerate(seats):
if seat == 0:
dist = min(abs(i - j) - 1 for j in occupied)
best.append(dist)
return max(best)
Давайте разбираться, что здесь происходит:
1) Сначала проходимся по списку и находим места, которые заняты:
occupied = [i for i, seat in enumerate(seats) if seat == 1]
То есть мы проверяем, если значение равно 1, то это место занято и мы сохраним индекс этого места в списке
2) Далее посмотрим все не занятые места и найдем для каждого из них минимальное расстояние до занятого места и вычтем единицу и будем добавлять эти расстояния в список:
for i, seat in enumerate(seats):
if seat == 0:
dist = min(abs(i - j) - 1 for j in occupied)
best.append(dist)
3) Отлично, теперь остается взять наибольшее значение из списка и получить ответ:
return max(best)
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥10🐳9 6🔥4
Сегодня поговорим про навык, который отделяет сеньора от джуна, а продуктивного человека — от того, кто вечно в прокрастинации. Речь про декомпозицию.
Если по-простому: декомпозиция — это умение разбивать одну большую и страшную «непонятную задачу» на мелкие, понятные и решаемые подзадачи.
Разберем на примере кода:
В Python декомпозиция начинается с функций. Вместо того чтобы писать простыню кода на 500 строк, мы выделяем логический блок, даем ему понятное имя и вызываем там, где нужно. Это база: мы избавляемся от дублей и делаем код читаемым.
Но что, если функций стало слишком много? Мы идем дальше и используем модули.
• Мы не забиваем один файл всем подряд.
• Раскидываем функции по отдельным файлам (модулям) по смыслу.
Например, функции для работы с БД — в файл
db_utils.py
Функции для парсинга — в файл
parser_tools.py
Это позволяет не перегружать контекст. Ты открываешь файл и видишь только то, что нужно сейчас.
Как это работает в жизни:
Тот же принцип применим к любой жизненной задаче. Хотите «стать аналитиком» или «запустить свой проект»? Это абстрактные идеи, к которым непонятно как подступиться. Мозг пугается объема и саботирует работу.
Что делать:
Разбивайте задачу до тех пор, пока каждый подпункт не станет вам предельно ясен.
Вопрос: а до какой степени делить?
Ответ: всё индивидуально. Главное — не переусердствовать (не нужно дробить задачу «налить кофе» на «встать», «подойти к столу», «взять чашку»). Делите ровно до того момента, пока вы не сможете сказать: «Окей, я точно знаю, как сделать этот шаг за 30-60 минут».
Итог:
Попробуйте прямо сейчас применить это к своей самой «висячей» задаче. Возьмите листок, ручку (или чистый файл в Notion, Obsidian) и начните превращать абстрактную идею в список конкретных, понятных действий.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17🐳4❤🔥3
В посте про итоги года я писал, что сделал несколько интересных покупок, и новый телефон — одна из них. Рассказываю, как это вышло.
Все знают про систему СберСпасибо. Многие застали период, когда Мегамаркет раздавал жирные промокоды и сыпал гору бонусов за покупки. В то время я успел заказать несколько вещей и накопить порядка 30к бонусов.
Для понимания: ими можно оплатить до 99% стоимости товара. Но сейчас цены на площадке часто х2 от рынка, и тратить их там просто «жаба» душила.
Как всё закрутилось:
1) Пуш: Приходит пуш от Сбера — если не потрачу бонусы до конца месяца, обнулится около 8к. Я начал суетиться, составил список того, что давно хотел купить. Поковырялся пару дней и забил, решив, что время еще есть и идеи появятся.
2) Промокод: Через пару дней прилетает новый пуш: скидка 10к при покупке от 40к. Вот тут я загорелся.
3) Поиск: Найти что-то в рынке даже с промокодом было сложно — к многим товарам он просто не применялся. В какой-то момент решил посмотреть телефоны, так как свой как раз хотел обновить.
Какой телефон выбрал и почему именно Android:
Я пользуюсь Android(ами) всю свою жизнь, так сложилось, и мне принципиально было взять именно его:
• Уже привык к системе.
• Нет заморочек с установкой приложений (банков и т.д.).
• И т.п.
В итоге выбор пал на Samsung Galaxy S25 Ultra. С учетом промокода его цена была в рынке (сравнивал с известным магазином который заканчивается на «77») + я списал свои 30к бонусов. Вот так я и стал счастливым обладателем нового флагмана
Итог:
О покупке вообще не жалею: работает быстро, экран классный, камера — огонь. Кто знает, возможно, ворвусь в блогинг с Reels? Время покажет.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤🔥5 4
Многие слышали о системе контроля версий, она же — GIT. Для аналитики не нужно быть гуру консоли, достаточно понять базовые команды и принципы работы.
Часто GIT в аналитике используется как стандарт для хранения всех DAGов в Airflow и совместной работы над кодом. Рекомендую следующие материалы, которых будет более чем достаточно:
Видеокурсы (видеоматериалы):
1) GIT - Полный Курс Git и GitHub Для Начинающих [4 ЧАСА]
2) Курс по Git, который делает жизнь разработчика проще
3) Основы командной разработки git в Visual Studio Code [20 МИНУТ]
Курсы на Stepik:
1) Основы Git и GitHub
2) Основы Git и консольных команд
Итог:
Освоив эту базу, вы закроете 90% рабочих задач. Если возникнут специфические вопросы, их уже можно будет точечно решать при помощи любой LLM. GIT — это стандарт, и его знание сильно упрощает жизнь в команде.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤🔥8🐳6
Использование LLM скоро станет таким же базовым навыком, как SQL или Python — это мое предположение.
Я активно пользуюсь чат-версиями нейросетей, но всегда скептически относился к ассистентам, работающим прямо в IDE или через CLI (в терминале). Казалось, это только усложнит жизнь.
Но решил попробовать. Выбор пал на Antigravity от Google — там есть топовые модели, включая Opus 4.5 от Anthropic. И я изменил свое мнение.
В чем преимущество перед браузерными LLM? Всё просто: такие ассистенты позволяют:
1) Создавать файлы: Вы пишете промт, даете права, и ассистент сам создает файл с кодом.
2) Запускать и тестировать код: Нейронка может не только написать код, но и запустить его, протестировать и, если что-то пойдет не так, сама же переписать.
3) Работать с GIT: Ассистент умеет пушить код в репозиторий. (Кстати, про Git я недавно писал здесь).
4) Воспринимать контекст всего проекта: Скачали новый проект? Чтобы быстро разобраться, вам не нужно копировать код кусками в браузер. Просто задайте промт ассистенту, и он прочитает весь проект, ответит на вопросы и даст полное понимание архитектуры. Это реально чудо!
5) И масса других возможностей, которые экономят время.
Итог:
Чтобы понять всю мощь этих инструментов, нужно попробовать его самостоятельно. Antigravity с Claude Opus 4.5 — это не просто чат, это полноценный помощник, который ускоряет процесс разработки и анализа данных, берет на себя рутину и позволяет сосредоточиться на главном.
Также рекомендую и другие инструменты в сторону которых можно посмотреть (claude code, opencode, codex, cursor, gemini)
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥12 5🐳4
Думаю, часто у многих возникает один и тот же вопрос: как правильно переносить код в Python, чтобы он был и рабочий, и читаемый?
Особенно когда у вас длинные вызовы функций, цепочки методов и SQL внутри скрипта.
База, которую нужно запомнить
1. Внутри
(), [], {} можно переносить строки без \.2. Закрывающую скобку лучше ставить на отдельной строке.
А теперь рассмотрим эти правила на примерах:
Пример правильного шаблона:
df = pd.read_excel(
"path",
sheet_name="Sheet1",
header=0,
)
Почему так удобно:
• быстро читается;
• легко добавлять новые аргументы;
Главное:
• все аргументы на одном уровне отступа;
• без "лесенки" из разного количества пробелов.
Вот так писать нельзя:
(
pd.read_excel("path")
text = input("Введите запрос")
)
Почему так писать нельзя: в круглых скобках Python ждет выражение, а не несколько инструкций с присваиванием.
Правильно:
df = pd.read_excel(
"path",
sheet_name="Sheet1",
)
text = input("Введите запрос: ")
1) Лучший вариант это через написания выражения в скобках: читается проще и меньше шансов сломать форматирование:
result = (
pd.read_excel(
"data.xlsx",
sheet_name="Sheet1",
)
.rename(columns={"old": "new"})
.query("amount > 0")
.groupby("category", as_index=False)
.agg(total=("amount", "sum"))
)
2) Можно через обратный слэш, но лучше как исключение:
df = pd.read_excel("dataframe.xlsx") \
.rename(columns={"name_column": "new_name_column"}) \
.describe()Минусы
\:• случайный пробел после
\ может сломать строку;• хуже поддерживать длинные выражения.
Итог:
Переносы это не "красота ради красоты", а скорость чтения и меньше ошибок.
Рабочее правило простое: перенос через скобки + 4 пробела (табуляция) + единый стиль во всем проекте.
\ или смешанный стиль? Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11 5❤🔥3
Большая часть SQL-работы это повторяющиеся действия.
Один из самых простых бустов продуктивности — это шаблоны в DBeaver.
Простой пример:
Часто пишем одно и то же:
select * from table_name limit 10;
Меняется только название таблицы.
Вместо ручного ввода создаем шаблон и вставляем его через
Ctrl + Alt + Space.
Как добавить такой шаблон:
• Переходим в окна (windows) → настройки (preferences) → редакторы (editors) → редактор SQL (SQL Editor) → Templates
• Там вы найдете шаблоны, которые уже идут по стандарту, по аналогии создаете свои запросы
• При этом есть возможность импортировать и экспортировать настройки (то есть вы можете быстро их восстановить в случае сбоя или поделиться своими шаблонами с коллегами, друзьями и т.д.)
• После того, как настроили шаблоны можно при написании кода использовать сочетание клавиш
Ctrl + Alt + Space
и выбрать ваш шаблон
Другие мои посты на тему ускорения вашей работы:
Итог:
Чтобы понять, насколько шаблоны в DBeaver ускоряют работу, достаточно один раз собрать свой набор шаблонов под повседневные задачи. Потом возвращаться к ручному набору уже не хочется.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥24❤🔥9 7
Если вы до сих пор не используете walrus operator (тот самый «морж»), то самое время это исправить. Если коротко - оператор
:=
Позволяет присвоить значение переменной прямо внутри выражения. То есть вам не нужно писать одну и ту же функцию или расчет дважды.
Что это дает на практике:
1️⃣ Меньше повторений и лишних вычислений.
2️⃣ Код становится компактнее (особенно в циклах и list comprehension).
3️⃣ Меньше нагрузка на CPU/API, если расчет «тяжелый».
Где это реально экономит время:
Без := (вызываем функцию 2 раза):
if get_user_score(user_id) > 80:
print(get_user_score(user_id))
С := (вызываем 1 раз, результат сохраняем в score на лету):
if (score := get_user_score(user_id)) > 80:
print(score)
Классика для тех, кто работает с API или агентами:
while (msg := get_next_message()):
handle_message(msg)
Пока сообщение приходит → обрабатываем. Как только вернулся None — цикл сам завершится.
Когда нужно отфильтровать список по результату функции и этот же результат оставить в списке:
squares_gt_10 = [sq for n in nums if (sq := n * n) > 10]
Здесь мы один раз посчитали n * n, проверили его и сразу записали в результат. Красота!
Итог:
Моржовый оператор — отличный инструмент, чтобы убрать дублирование кода и оптимизировать его там где это возможно.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных, AI)
Проголосуйте за канал, чтобы он получил больше возможностей.
1🔥9 5 3 2 1 1
Представьте ситуацию: вы строите бизнесу график дневной выручки, а там — настоящая «кардиограмма». В выходные пик, в понедельник провал, в праздник аномальный выброс. Смотришь на эти качели и не понимаешь: мы глобально растем или летим в пропасть?
Данные часто содержат «шум». Чтобы увидеть реальный тренд, используется Скользящее среднее (Moving Average). Если коротко: мы берем каждую дату и считаем среднее значение не только за этот день, но и за N предыдущих. График выравнивается, и скрытое становится явным.
Разберем на практике: 👨💻
Допустим, нам нужно сгладить дневную выручку (revenue) за 7 дней. В SQL это элегантно решается через оконные функции:
SELECT
dt,
revenue,
AVG(revenue) OVER (
ORDER BY dt
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) as ma_7d
FROM daily_revenue;
Здесь магия кроется в ROWS BETWEEN 6 PRECEDING AND CURRENT ROW. Мы буквально говорим базе: «для каждой даты возьми текущую строку и 6 строк до неё, а потом усредни».
🛑 Главная ловушка — проблема «Холодного старта»:
Частый вопрос на собесах:
«А что будет с первой строкой в таблице? У неё же нет истории за 6 дней!»
SQL не упадет с ошибкой. Для 1-го дня он посчитает среднее только по 1 дню. Для 2-го — по 2-м. Окно будет постепенно «накапливаться», пока не достигнет 7 дней.
Как с этим жить: Если вам нужна идеальная математическая точность для аналитики, первые дни периода (пока окно не наполнилось) на итоговом графике просто отрезают, чтобы они не искажали картину.
🟢 Как выбрать правильный интервал (окно):
Выбор зависит от того, какие циклы есть в вашем бизнесе:
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥25🐳8🔥6 6 2
🚀 SQL-хак: как проверить любой запрос без таблиц и админских прав за 5 секунд
Представьте ситуацию: вы пишете сложный SQL-запрос. Возможно, там хитрый CASE WHEN или другой хитрый код. Но таблицы, с которыми вы работаете, огромные, тестовой среды нет, а админские права на создание временных таблиц — отсутствуют. Как проверить, что ваш кусок кода вообще работает, не дожидаясь часа, пока выполнится запрос на 100М строк? 😨
В Python мы просто открываем консоль, накидываем тестовые данные в список и проверяем функцию. А в SQL?
Есть решение:
SQL позволяет "создать" временную таблицу прямо внутри запроса, используя оператор VALUES. Это мгновенно, не требует никаких прав и не оставляет следов в базе.
Как это работает:👨💻
Допустим, нам нужно проверить, как поведет себя CASE WHEN с разными статусами.
Что здесь происходит:✅
• VALUES (...): Мы передаем список кортежей, где каждый кортеж — это одна строка нашей "виртуальной" таблицы.
• AS t(id, status): Мы даем этому набору данных имя t (как будто это таблица) и присваиваем имена колонкам: id и status.
• FROM (...) as t: Теперь к этому "набору данных" можно обращаться как к обычной таблице t, джойнить, применять оконные функции, фильтровать — все, что угодно!
Итог:🤩
Оператор VALUES — это как маленькая песочница для SQL-разработчика. Позволяет мгновенно проверить любую SQL-логику, изолировать ошибку и быть уверенным в своем коде, прежде чем запускать его на "боевых" данных. Must-have для каждого, кто ценит свое время!
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ Знали об этом трюке? Или тоже мучались, создавая временные таблицы? Делитесь в комментариях! 👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.
🚬 Делаю резюме, которые превращаются в офферы: mentor.dima-sqlit.ru
@dima_sqlit
Представьте ситуацию: вы пишете сложный SQL-запрос. Возможно, там хитрый CASE WHEN или другой хитрый код. Но таблицы, с которыми вы работаете, огромные, тестовой среды нет, а админские права на создание временных таблиц — отсутствуют. Как проверить, что ваш кусок кода вообще работает, не дожидаясь часа, пока выполнится запрос на 100М строк? 😨
В Python мы просто открываем консоль, накидываем тестовые данные в список и проверяем функцию. А в SQL?
Есть решение:
оператор VALUES! 🤩
SQL позволяет "создать" временную таблицу прямо внутри запроса, используя оператор VALUES. Это мгновенно, не требует никаких прав и не оставляет следов в базе.
Как это работает:
Допустим, нам нужно проверить, как поведет себя CASE WHEN с разными статусами.
-- Создаем "виртуальную" таблицу прямо на лету!
SELECT
t.id,
t.status,
CASE
WHEN t.status = 'approved' THEN '✅ Одобрено'
WHEN t.status = 'pending' THEN '⏳ В ожидании'
ELSE '❌ Отклонено'
END as status_text
FROM (
VALUES
(1, 'approved'),
(2, 'pending'),
(3, 'rejected'),
(4, 'approved'),
(5, 'unknown')
) as t(id, status);
Что здесь происходит:
• VALUES (...): Мы передаем список кортежей, где каждый кортеж — это одна строка нашей "виртуальной" таблицы.
• AS t(id, status): Мы даем этому набору данных имя t (как будто это таблица) и присваиваем имена колонкам: id и status.
• FROM (...) as t: Теперь к этому "набору данных" можно обращаться как к обычной таблице t, джойнить, применять оконные функции, фильтровать — все, что угодно!
Итог:
Оператор VALUES — это как маленькая песочница для SQL-разработчика. Позволяет мгновенно проверить любую SQL-логику, изолировать ошибку и быть уверенным в своем коде, прежде чем запускать его на "боевых" данных. Must-have для каждого, кто ценит свое время!
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29 10🐳6❤🔥2
🎙 Handy: как превращать голос в текст и не терять гениальные идеи:
Бывает так: сидишь, пилишь сложную задачу или пишешь код, и тут в голову пришла гениальная идея по другому проекту или пришел инсайт, как пофиксить старый баг.
Обычно в этот момент мы либо бросаем текущую задачу и лезем записывать (теряя фокус), либо надеемся на память (и благополучно забываем всё через 5 минут). Печатать текст руками — это долго и часто лень, особенно когда ты «в потоке».
Решение: Handy. Это бесплатная утилита (работает она на основе Whisper от OpenAI) которая позволяет мгновенно превратить голос в текст, не отрываясь от работы. 🚀
👨💻 В чем киллер-фича для продуктивности:
1️⃣ Мгновенный ввод: Зажимаем Ctrl + Пробел (дефолтный хоткей в Handy), наговорили мысль, как только закончили отжимаем Ctrl + Пробел и Handy транскрибирует голос и сразу вставляет текст в активное поле (IDE, мессенджер, заметки).
2️⃣ Сохранение контекста: Вы тратите 5 секунд на то, чтобы «выгрузить» идею из головы, и тут же продолжаешь работать над основной задачей. Время на написание текста не тратится вообще
3️⃣ Программа всегда работает в фоне и не мешает вашим основным задачам.
🤖 Идея для мощного воркфлоу: Суммаризация через LLM
Я использую Handy, чтобы быстро «сливать» поток сознания в одну заметку в течение дня. А вечером делаю следующее:
Собираю все записанные за день мысли в один блок.
• Закидываю их в нейронку (ChatGPT/Claude).
• Прошу: «Суммаризируй эти идеи и преврати их в список задач или структуру для постов».
• Это позволяет освободить голову для работы прямо сейчас, зная, что ни одна деталь не потеряется и будет обработана позже.
Где забрать Handy:🔥
Рекомендую попробовать всем, кто ценит свое время и хочет ускорить процесс формализации идей.
• 📂 Исходники на GitHub — если хотите посмотреть, как всё устроено внутри.
• 🌐 Официальный сайт Handy — здесь можно изучить подробности и скачать программу.
Итог:🤩
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ А вы пробовали накидывать идеи голосом, а потом «скармливать» их нейронке для структуры? Делитесь опытом в комментариях! 👇
✔️ Подпишитесь на канал, чтобы не пропустить следующие хаки.
🚬 Провожу консультации, подробности по ссылке: mentor.dima-sqlit.ru
@dima_sqlit
Бывает так: сидишь, пилишь сложную задачу или пишешь код, и тут в голову пришла гениальная идея по другому проекту или пришел инсайт, как пофиксить старый баг.
Обычно в этот момент мы либо бросаем текущую задачу и лезем записывать (теряя фокус), либо надеемся на память (и благополучно забываем всё через 5 минут). Печатать текст руками — это долго и часто лень, особенно когда ты «в потоке».
Решение: Handy. Это бесплатная утилита (работает она на основе Whisper от OpenAI) которая позволяет мгновенно превратить голос в текст, не отрываясь от работы. 🚀
👨💻 В чем киллер-фича для продуктивности:
🤖 Идея для мощного воркфлоу: Суммаризация через LLM
Я использую Handy, чтобы быстро «сливать» поток сознания в одну заметку в течение дня. А вечером делаю следующее:
Собираю все записанные за день мысли в один блок.
• Закидываю их в нейронку (ChatGPT/Claude).
• Прошу: «Суммаризируй эти идеи и преврати их в список задач или структуру для постов».
• Это позволяет освободить голову для работы прямо сейчас, зная, что ни одна деталь не потеряется и будет обработана позже.
Где забрать Handy:
Рекомендую попробовать всем, кто ценит свое время и хочет ускорить процесс формализации идей.
• 📂 Исходники на GitHub — если хотите посмотреть, как всё устроено внутри.
• 🌐 Официальный сайт Handy — здесь можно изучить подробности и скачать программу.
Итог:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤🔥9🐳4
В мире дата-инжиниринга Airflow — это стандарт. Но часто бывает так: вам нужно просто запускать один SQL-скрипт или Python-парсер раз в день. Вы идете к дата-инженерам, а там: «Создай тикет, подожди аппрува в GitLab, пропиши DAG, дождись деплоя...».
Иногда проще и быстрее вспомнить про дедовский, но рабочий метод — Crontab.
Почему все топят за Airflow?
Airflow — это мощный оркестратор, и он крут, когда:
• У вас сложные зависимости (скрипт Б должен упасть, если не отработал скрипт А).
• Нужен красивый UI, чтобы следить за статусами.
• Нужна встроенная отчетность и легкий перезапуск.
• И так далее.....
Но если ваша задача — «просто запусти этот скрипт в 8 утра», Airflow может стать лишним бюрократическим барьером.
Crontab: быстро и просто
Crontab — это встроенный в Linux планировщик задач. Его главный плюс: автономия. Вам не нужно ждать деплоя или одобрения всей команды инженеров.
Как это работает:
Вы заходите на сервер и одной строчкой в терминале прописываете расписание. Например:
0 8 * * * python3 /path/to/your_script.py
(Запуск каждый день в 08:00)
«А как же логи и алерты?» — спросите вы. ✅
• Да, у Cron нет UI, но это решается парой строк кода:
• Логирование: Просто дописываем в скрипт базовый logging или сохраняем вывод в .txt файл.
• Алерты: Пишем простенькую функцию, которая в блоке except кидает сообщение об ошибке вам в Telegram-бота (как написать просто бота для Telegram смотрите в моем посте)
Итог:
Airflow придуман не просто так, и для больших систем он незаменим. Но если вам нужно быстро и просто запустить автоматизацию здесь и сейчас, не бойтесь использовать Crontab.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥10❤🔥3🐳1 1