This media is not supported in your browser
VIEW IN TELEGRAM
🚨 SQL Никогда НЕ ДЕЛАЙ ТАК #sql
НИКОГДА НЕ ЛОМАЙ ИНДЕКСЫ ФУНКЦИЯМИ: не оборачивай индексируемые поля в функции внутри WHERE.
Как только ты пишешь LOWER(), CAST(), COALESCE() или любые вычисления по колонке — индекс перестаёт работать, и запрос падает в полное сканирование таблицы.
Это одна из самых тихих причин, почему запросы внезапно превращаются в тормоза.
Вместо этого приводи значения заранее или используй функциональные индексы.
НИКОГДА НЕ ЛОМАЙ ИНДЕКСЫ ФУНКЦИЯМИ: не оборачивай индексируемые поля в функции внутри 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));
🔥6❤2👍2
⚡️ Полное руководство по Bash: от основ к продвинутым темам
Bash (Bourne Again SHell) — это одна из самых популярных Unix-оболочек, широко используемая для запуска команд и написания скриптов в Linux и macOS.
Скрипты Bash позволяют автоматизировать рутинные задачи, объединять команды в программы и управлять системой через командную строку.
Данное руководство последовательно познакомит вас с основами Bash (синтаксис, переменные, условия, циклы и т.д.), а затем перейдет к продвинутым возможностям (таким как настройка strict mode, использование trap-обработчиков, планирование задач через cron и др.). Мы рассмотрим практические примеры скриптов, сопровождая их поясняющими комментариями, чтобы у вас сложилось цельное понимание создания надежных Bash-скриптов.
https://uproger.com/polnoe-rukovodstvo-po-bash-ot-osnov-k-prodvinutym-temam/
Видео: https://www.youtube.com/watch?v=ei0a1TT4ukU
Bash (Bourne Again SHell) — это одна из самых популярных Unix-оболочек, широко используемая для запуска команд и написания скриптов в Linux и macOS.
Скрипты Bash позволяют автоматизировать рутинные задачи, объединять команды в программы и управлять системой через командную строку.
Данное руководство последовательно познакомит вас с основами Bash (синтаксис, переменные, условия, циклы и т.д.), а затем перейдет к продвинутым возможностям (таким как настройка strict mode, использование trap-обработчиков, планирование задач через cron и др.). Мы рассмотрим практические примеры скриптов, сопровождая их поясняющими комментариями, чтобы у вас сложилось цельное понимание создания надежных Bash-скриптов.
https://uproger.com/polnoe-rukovodstvo-po-bash-ot-osnov-k-prodvinutym-temam/
Видео: https://www.youtube.com/watch?v=ei0a1TT4ukU
❤5👍3
Боты — это не будущее, это уже норма для Python-разработчика 🐍
Вас спросят на собеседовании: "А вы ботов писали?" И если ответите "нет" — потеряете позицию тому, кто написал.
За 4 месяца вы писать ботов быстро и качественно.
Что будет в стеке:
✅ aiogram и pyrogram — библиотеки, что нужны в каждом проекте
✅ Асинхронность (asyncio/await) — напишешь быстрые боты
✅ FSM, middlewares, webhooks — архитектура, как в боевых условиях
✅ SQLAlchemy + Postgres — боты со своей БД
✅ Django админ-панель — управляешь ботом, как профессионал
✅ AI-интеграции — Hugging Face, локальные модели, бесплатные сервисы РФ
✅ Docker + облако — задеплоишь, как в real projects
✅ VK API + Telegram — мультиплатформенность в резюме
Это не курс "Hello Bot" — это боевая подготовка.
⏰ Старт 26 ноября — это последний шанс в этом году!
Сейчас скидка 10% на сайте, а по промокоду Chatbots5 скидка ещё 5%!
👉 Регистрация и подробности о курсе: https://tglink.io/8357e54e5f21?erid=2W5zFJaCkVv
#реклама
О рекламодателе
Вас спросят на собеседовании: "А вы ботов писали?" И если ответите "нет" — потеряете позицию тому, кто написал.
За 4 месяца вы писать ботов быстро и качественно.
Что будет в стеке:
✅ aiogram и pyrogram — библиотеки, что нужны в каждом проекте
✅ Асинхронность (asyncio/await) — напишешь быстрые боты
✅ FSM, middlewares, webhooks — архитектура, как в боевых условиях
✅ SQLAlchemy + Postgres — боты со своей БД
✅ Django админ-панель — управляешь ботом, как профессионал
✅ AI-интеграции — Hugging Face, локальные модели, бесплатные сервисы РФ
✅ Docker + облако — задеплоишь, как в real projects
✅ VK API + Telegram — мультиплатформенность в резюме
Это не курс "Hello Bot" — это боевая подготовка.
⏰ Старт 26 ноября — это последний шанс в этом году!
Сейчас скидка 10% на сайте, а по промокоду Chatbots5 скидка ещё 5%!
👉 Регистрация и подробности о курсе: https://tglink.io/8357e54e5f21?erid=2W5zFJaCkVv
#реклама
О рекламодателе
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
🔥КАК УСТАНОВИТЬ PYTHON: Самый простой способ
Самый быстрый и эффективный способ поставить Python без лишних настроек это использовать пакетный менеджер системы. Он сам подтянет зависимости, поставит актуальную версию и настроит доступ к python и pip. Это надёжнее чем скачивать вручную и проще чем возиться с окружениями. Подходит и новичкам и разработчикам.
# Windows через winget
winget install Python.Python
# macOS через Homebrew
brew install python
# Ubuntu и Debian
sudo apt install python3 python3-pip
# Проверка установленной версии
python3 --version
pip3 --version
Самый быстрый и эффективный способ поставить Python без лишних настроек это использовать пакетный менеджер системы. Он сам подтянет зависимости, поставит актуальную версию и настроит доступ к python и pip. Это надёжнее чем скачивать вручную и проще чем возиться с окружениями. Подходит и новичкам и разработчикам.
# Windows через winget
winget install Python.Python
# macOS через Homebrew
brew install python
# Ubuntu и Debian
sudo apt install python3 python3-pip
# Проверка установленной версии
python3 --version
pip3 --version
😁2👍1🔥1
Олег Шелест - профессионал по информационной безопасности, раскрывает скрытые механики Linux, с помощью наглядных картинок и коротких, максимально понятных разборов у себя в тг канале.
- Без воды.
- Без лишней теории.
Только практические приёмы, которые реально используют профи.
Если хочешь уверенно владеть Bash - здесь ты получишь всё, что нужно: t.me/bashmastter
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1👎1
Вопрос с собеседования
Что выведет этот код и почему?
Попробуй сначала сам ответить, а потом смотри разбор.
Что происходит по шагам:
Переменная a ссылается на список [1, 2, 3].
b = a
Теперь b ссылается на тот же самый список, что и a.
Не копия, а один и тот же объект в памяти.
a += [4, 5]
Важно: для списков += работает как изменение объекта на месте:
это примерно то же самое, что:
a.extend([4, 5])
То есть в существующий список, на который ссылаются и a, и b, добавляются элементы 4 и 5.
Поэтому:
Оба указывают на один изменённый список.
Часть 2. Кортежи
a = (1, 2, 3)
b = a
a += (4, 5)
print(a)
print(b)
Кортежи неизменяемы, и здесь начинается магия.
a = (1, 2, 3)
a ссылается на кортеж (1, 2, 3).
b = a
b ссылается на тот же кортеж (1, 2, 3).
a += (4, 5)
Для кортежей += уже не может менять объект на месте (они immutable).
Поэтому Python делает так:
a = a + (4, 5)
То есть создаётся новый кортеж (1, 2, 3, 4, 5) и переменная a переназначается на него.
b при этом остаётся смотреть на старый кортеж (1, 2, 3).
Поэтому:
print(a) # (1, 2, 3, 4, 5)
print(b) # (1, 2, 3)
В чём хитрость
Для списка a += [4, 5] мутирует объект на месте, и это видно через все переменные, которые на него ссылаются.
Для кортежа a += (4, 5) создаёт новый объект и переназначает только a.
Итого:
Если хочешь, могу ещё один хитрый вопрос разобрать - про изменяемые значения по умолчанию в аргументах функции или про циклы и замыкания.
Что выведет этот код и почему?
a = [1, 2, 3]
b = a
a += [4, 5]
print(a)
print(b)
a = (1, 2, 3)
b = a
a += (4, 5)
print(a)
print(b)
Попробуй сначала сам ответить, а потом смотри разбор.
Часть 1. Списки
a = [1, 2, 3]
b = a
a += [4, 5]
print(a)
print(b)
Что происходит по шагам:
a = [1, 2, 3]
Переменная a ссылается на список [1, 2, 3].
b = a
Теперь b ссылается на тот же самый список, что и a.
Не копия, а один и тот же объект в памяти.
a += [4, 5]
Важно: для списков += работает как изменение объекта на месте:
это примерно то же самое, что:
a.extend([4, 5])
То есть в существующий список, на который ссылаются и a, и b, добавляются элементы 4 и 5.
Поэтому:
print(a) # [1, 2, 3, 4, 5]
print(b) # [1, 2, 3, 4, 5]
Оба указывают на один изменённый список.
Часть 2. Кортежи
a = (1, 2, 3)
b = a
a += (4, 5)
print(a)
print(b)
Кортежи неизменяемы, и здесь начинается магия.
a = (1, 2, 3)
a ссылается на кортеж (1, 2, 3).
b = a
b ссылается на тот же кортеж (1, 2, 3).
a += (4, 5)
Для кортежей += уже не может менять объект на месте (они immutable).
Поэтому Python делает так:
a = a + (4, 5)
То есть создаётся новый кортеж (1, 2, 3, 4, 5) и переменная a переназначается на него.
b при этом остаётся смотреть на старый кортеж (1, 2, 3).
Поэтому:
print(a) # (1, 2, 3, 4, 5)
print(b) # (1, 2, 3)
В чём хитрость
Для списка a += [4, 5] мутирует объект на месте, и это видно через все переменные, которые на него ссылаются.
Для кортежа a += (4, 5) создаёт новый объект и переназначает только a.
Итого:
# Часть со списком:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
# Часть с кортежем:
(1, 2, 3, 4, 5)
(1, 2, 3)
Если хочешь, могу ещё один хитрый вопрос разобрать - про изменяемые значения по умолчанию в аргументах функции или про циклы и замыкания.
👍5❤3