This media is not supported in your browser
VIEW IN TELEGRAM
🚨 SQL Никогда НЕ ДЕЛАЙ ТАК #sql
НИКОГДА НЕ ЛОМАЙ ИНДЕКСЫ ФУНКЦИЯМИ: не оборачивай индексируемые поля в функции внутри WHERE.
Как только ты пишешь LOWER(), CAST(), COALESCE() или любые вычисления по колонке — индекс перестаёт работать, и запрос падает в полное сканирование таблицы.
Это одна из самых тихих причин, почему запросы внезапно превращаются в тормоза.
Вместо этого приводи значения заранее или используй функциональные индексы.
https://www.youtube.com/shorts/AyiAslOeJFA
НИКОГДА НЕ ЛОМАЙ ИНДЕКСЫ ФУНКЦИЯМИ: не оборачивай индексируемые поля в функции внутри WHERE.
Как только ты пишешь LOWER(), CAST(), COALESCE() или любые вычисления по колонке — индекс перестаёт работать, и запрос падает в полное сканирование таблицы.
Это одна из самых тихих причин, почему запросы внезапно превращаются в тормоза.
Вместо этого приводи значения заранее или используй функциональные индексы.
Плохо: индекс по email НЕ используется
SELECT *
FROM users
WHERE LOWER(email) = 'user@example.com';
-- Хорошо: нормализуем значение заранее
SELECT *
FROM users
WHERE email = 'user@example.com';
-- Или создаём функциональный индекс (PostgreSQL)
CREATE INDEX idx_users_email_lower ON users (LOWER(email));
https://www.youtube.com/shorts/AyiAslOeJFA
❤7👍3🔥1
⚡️Представь: ты дошёл до оффера в Big Tech, осталось «просто поболтать про прошлый опыт» — и именно тут тебя разворачивают. Разница между middle и senior — это не только LeetCode и system design, а то, как ты говоришь о своих проектах.
🔥9 декабря в 19.00 мск. приглашаем на открытый вебинар «Самое важное интервью при устройстве в Big Tech».
Спикер: Даня Слободенюк, Team Lead разработки в ex-Yandex, ex-T-Bank, ex-Sber, founder algocode
Вопросы:
• устройство секции про прошлый опыт
• как структурировать рассказ о сложном проекте
• как разбирать факапы и показывать лидерство
• типовые вопросы про масштабирование и «пожары»
• как эта секция решает твой грейд и ЗП
🎁Бонус: доступ к algocode на 3 дня за 1 рубль, чек-лист по прохождению секции
👉Регистрация
algocode помогает готовиться к собеседованиям в Big Tech — от алгоритмов и system design до таких «простых» секций про прошлый опыт.
#реклама
О рекламодателе
🔥9 декабря в 19.00 мск. приглашаем на открытый вебинар «Самое важное интервью при устройстве в Big Tech».
Спикер: Даня Слободенюк, Team Lead разработки в ex-Yandex, ex-T-Bank, ex-Sber, founder algocode
Вопросы:
• устройство секции про прошлый опыт
• как структурировать рассказ о сложном проекте
• как разбирать факапы и показывать лидерство
• типовые вопросы про масштабирование и «пожары»
• как эта секция решает твой грейд и ЗП
🎁Бонус: доступ к algocode на 3 дня за 1 рубль, чек-лист по прохождению секции
👉Регистрация
algocode помогает готовиться к собеседованиям в Big Tech — от алгоритмов и system design до таких «простых» секций про прошлый опыт.
#реклама
О рекламодателе
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
❌ НЕЛЬЗЯ ТАК ИСПОЛЬЗОВАТЬ LAMBDA В PYTHON
Главная ошибка - превращать lambda в свалку логики: добавлять туда побочные эффекты, вызовы print, длинные условия и вычисления.
Такие лямбды плохо читаются, их невозможно нормально отлаживать, и они нарушают саму идею — быть короткой и чистой функцией. Всё сложное нужно выносить в обычную функцию. Подписывайся, больше фишек каждый день !
Главная ошибка - превращать lambda в свалку логики: добавлять туда побочные эффекты, вызовы print, длинные условия и вычисления.
Такие лямбды плохо читаются, их невозможно нормально отлаживать, и они нарушают саму идею — быть короткой и чистой функцией. Всё сложное нужно выносить в обычную функцию. Подписывайся, больше фишек каждый день !
# нельзя так делать — lambda с изменением состояния
data = [1, 2, 3]
logs = []
# опасный антипаттерн
process = lambda x: logs.append(f"processed {x}") or (x * 10)
result = [process(n) for n in data]
print("RESULT:", result)
print("LOGS:", logs)
👍4❤3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Python: САМЫЙ ЭФФЕКТИВНЫЙ АЛГОРИТМ ДЛЯ ПОИСКА
Нет «одного» идеального алгоритма на все случаи жизни, но для поиска по отсортированным данным классика — бинарный поиск с сложностью О лог н.
Вместо того чтобы проходить весь список по очереди, он каждый раз делит диапазон пополам и быстро сужает область поиска.
Главное правило: если можешь отсортировать данные и потом искать — почти всегда лучше использовать бинарный поиск, а не линейный проход.
Нет «одного» идеального алгоритма на все случаи жизни, но для поиска по отсортированным данным классика — бинарный поиск с сложностью О лог н.
Вместо того чтобы проходить весь список по очереди, он каждый раз делит диапазон пополам и быстро сужает область поиска.
Главное правило: если можешь отсортировать данные и потом искать — почти всегда лучше использовать бинарный поиск, а не линейный проход.
nums = [1, 4, 7, 9, 15, 20, 33, 42]
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return True
if arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return False
print(binary_search(nums, 33))
print(binary_search(nums, 100))
❤5