5 распространённых ошибок в Django
1️⃣ Не использование
❌ Ошибка: Неоптимизированные запросы к базе данных при работе с внешними ключами и многими ко многим, что приводит к неэффективным запросам (проблема N+1).
2️⃣ Недооценка возможностей Django Admin
❌ Ошибка: Недостаточное использование мощных функций интерфейса администрирования Django.
3️⃣ Обращение с QuerySets как с обычными списками
❌ Ошибка: Неправильное понимание работы QuerySets, что приводит к лишним запросам к базе данных.
4️⃣ Неверное обслуживание статических и медиа-файлов
❌ Ошибка: Использование Django для обслуживания статических и медиа-файлов в продакшене.
5️⃣ Использование `
❌ Ошибка: Использование
1️⃣ Не использование
select_related
и prefetch_related
для FK и M2M запросов❌ Ошибка: Неоптимизированные запросы к базе данных при работе с внешними ключами и многими ко многим, что приводит к неэффективным запросам (проблема N+1).
2️⃣ Недооценка возможностей Django Admin
❌ Ошибка: Недостаточное использование мощных функций интерфейса администрирования Django.
3️⃣ Обращение с QuerySets как с обычными списками
❌ Ошибка: Неправильное понимание работы QuerySets, что приводит к лишним запросам к базе данных.
4️⃣ Неверное обслуживание статических и медиа-файлов
❌ Ошибка: Использование Django для обслуживания статических и медиа-файлов в продакшене.
5️⃣ Использование `
.all()
с большими или неупорядоченными наборами данных❌ Ошибка: Использование
.all()
на моделях без дефолтного порядка или с большими наборами данных, что приводит к проблемам с производительностью.👍8❤2🔥1
Философия разработки: советы для разработчиков
В своей статье старший разработчик делится важными принципами, которые помогут избежать распространенных ошибок:
👍 Избегайте переписывания с нуля — распознавайте сложности заранее.
👍 Автоматизируйте хорошие практики — автоматические тесты помогут поддерживать стандарты и предотвратить ошибки.
👍 Учитывайте патологичные данные — ваш код должен справляться с любыми ситуациями, даже с самыми необычными входными данными.
👍 Ищите более простые решения — улучшайте код и ищите более элегантные способы решения задач.
👍 Пишите тестируемый код — минимизируйте побочные эффекты и обеспечьте чистоту интерфейсов.
Статья с деталями: https://clc.to/wSVV0A
В своей статье старший разработчик делится важными принципами, которые помогут избежать распространенных ошибок:
👍 Избегайте переписывания с нуля — распознавайте сложности заранее.
👍 Автоматизируйте хорошие практики — автоматические тесты помогут поддерживать стандарты и предотвратить ошибки.
👍 Учитывайте патологичные данные — ваш код должен справляться с любыми ситуациями, даже с самыми необычными входными данными.
👍 Ищите более простые решения — улучшайте код и ищите более элегантные способы решения задач.
👍 Пишите тестируемый код — минимизируйте побочные эффекты и обеспечьте чистоту интерфейсов.
Статья с деталями: https://clc.to/wSVV0A
👍12😁2❤1🔥1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🧠 Твоя БД скоро станет умнее тебя: 5 трендов open-source баз данных 2025
БД перестают быть просто хранилищем — теперь они оптимизируют запросы, автоматически анализируют данные и даже используют AI для прогнозов.
Какие фичи перевернут мир open-source БД в 2025? Узнайте в статье👇
🫢 Прочитать статью
🐸 Библиотека devops'a
БД перестают быть просто хранилищем — теперь они оптимизируют запросы, автоматически анализируют данные и даже используют AI для прогнозов.
Какие фичи перевернут мир open-source БД в 2025? Узнайте в статье👇
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🤩1
Полезный инструмент в Python — wraps из модуля functools.
✅ Это декоратор, который помогает сохранить имя и документацию функций, когда вы их декорируете.
👍 На первый взгляд, звучит как мелочь, но если вы пишете API или код, который будут использовать другие, это может сыграть важную роль.
✅ Это декоратор, который помогает сохранить имя и документацию функций, когда вы их декорируете.
👍 На первый взгляд, звучит как мелочь, но если вы пишете API или код, который будут использовать другие, это может сыграть важную роль.
👍10👏9❤4🥰1👾1
Визуализация пакетов PyPi — новый способ поиска библиотек
Если вы разрабатываете на Python, то наверняка используете PyPi. Мы нашли интересную визуализацию пакетов, которая делает процесс их изучения и поиска более удобным и наглядным.
✅ Графическая карта пакетов
✅ Удобный поиск и исследование зависимостей
✅ Возможность находить новые полезные библиотеки
📂 Исходный код и инструкции для воспроизведения тоже доступны.
Ссылка на проект: https://clc.to/uxDWGg
Если вы разрабатываете на Python, то наверняка используете PyPi. Мы нашли интересную визуализацию пакетов, которая делает процесс их изучения и поиска более удобным и наглядным.
✅ Графическая карта пакетов
✅ Удобный поиск и исследование зависимостей
✅ Возможность находить новые полезные библиотеки
📂 Исходный код и инструкции для воспроизведения тоже доступны.
Ссылка на проект: https://clc.to/uxDWGg
👍7❤2🔥1
Msgspec vs DataClasses: битва за лучшую сериализацию в Python
Msgspec и DataClasses — два популярных способа структурирования данных в Python.
В разборе:
⚡ Чем отличаются Msgspec и DataClasses?
⚡ Какой из них эффективнее?
⚡ Где лучше применять каждый?
📖 Читать статью: https://clc.to/MP1VxA
Msgspec и DataClasses — два популярных способа структурирования данных в Python.
В разборе:
⚡ Чем отличаются Msgspec и DataClasses?
⚡ Какой из них эффективнее?
⚡ Где лучше применять каждый?
📖 Читать статью: https://clc.to/MP1VxA
❤8👍1🔥1
Copier — инструмент для работы с шаблонами проектов
🔹 Что умеет Copier?
1. Работает с локальными путями и Git-репозиториями.
2. Позволяет динамически заменять значения в любых текстовых файлах.
3. Генерирует чистый вывод.
4. Безопасно обновляет файлы без перезаписи, если это не указано явно.
🔥 Готов к работе с Gitpod, CI, PyPI и Codecov.
Ссылка на проект: https://clc.to/55Ixlg
🔹 Что умеет Copier?
1. Работает с локальными путями и Git-репозиториями.
2. Позволяет динамически заменять значения в любых текстовых файлах.
3. Генерирует чистый вывод.
4. Безопасно обновляет файлы без перезаписи, если это не указано явно.
🔥 Готов к работе с Gitpod, CI, PyPI и Codecov.
Ссылка на проект: https://clc.to/55Ixlg
❤5👍3🔥1
Вам нравится читать контент на этом канале?
Возможно, вы задумывались о том, чтобы купить на нем интеграцию?
Следуйте 3 простым шагам, чтобы сделать это:
1) Нажмите на ссылку: Вход
2) Пополняйтесь удобным способом
3) Размещайте публикацию
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его
Возможно, вы задумывались о том, чтобы купить на нем интеграцию?
Следуйте 3 простым шагам, чтобы сделать это:
1) Нажмите на ссылку: Вход
2) Пополняйтесь удобным способом
3) Размещайте публикацию
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его
Telegram
Telega.in
Платформа для запуска рекламы в Telegram: продвигайтесь в проверенных каналах и чатах.
❤2
🔥 Промпт для рефакторинга кода
Хотите обновить код и привести его к лучшим современным практикам?
Используйте этот промпт:
Библиотека питониста #буст
Хотите обновить код и привести его к лучшим современным практикам?
Используйте этот промпт:
Please review and refactor the following Python code to follow modern best practices and PEP 8 standards.
Refactoring requirements:
1. Ensure PEP 8 compliance (readability, formatting, naming conventions).
2. Improve structure, modularity, and performance.
3. Add docstrings, comments, and type hints where needed.
4. Optimize loops, data structures, and error handling.
5. Replace deprecated or inefficient code with modern Pythonic alternatives.
6. Provide a brief explanation of the improvements made.
[insert code here]
Библиотека питониста #буст
❤5👍2😁2🥱1
Forwarded from Proglib.academy | IT-курсы
🧮🔠 Математика в действии: решаем хитрые задачи по прогнозированию, оптимизации и логике
Статья, которая поможет развить навыки решения задач с помощью математики.
➡️ Вот что вас ждет
1️⃣ Прогнозирование численности населения — используем цепи Маркова для предсказания миграций между городом и пригородами.
2️⃣ Минимизация затрат — находим минимальное скалярное произведение векторов для оптимального распределения задач между работниками.
3️⃣ Машина времени — решаем задачу максимального числа пересекающихся временных интервалов с помощью заметающей прямой.
4️⃣ Алгоритм Целлера — вычисляем день недели по дате. Проверка на практике.
🔵 Хочешь прокачаться в математике для ML? Тогда разбирайся с этими задачами и не упусти вебинар: «Математика для ML: от теории к практике».
👉 Читать статью
Статья, которая поможет развить навыки решения задач с помощью математики.
👉 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2❤1
✅ To-Do приложение на Python и Kivy
Хочешь освоить разработку GUI-приложений? Начни с классического проекта — To-Do приложения.
В этом разборе:
📝 Добавление и сохранение задач в SQLite
✅ Отметка выполненных задач
🗑️ Удаление завершенных пунктов
📖 Читать туториал: https://clc.to/zbOceg
Библиотека питониста #буст
Хочешь освоить разработку GUI-приложений? Начни с классического проекта — To-Do приложения.
В этом разборе:
📝 Добавление и сохранение задач в SQLite
✅ Отметка выполненных задач
🗑️ Удаление завершенных пунктов
📖 Читать туториал: https://clc.to/zbOceg
Библиотека питониста #буст
👍4❤2🔥1🥱1
🔥 Что такое
✅ Оптимизирует потребление памяти за счёт отказа от
✅ Ускоряет доступ к атрибутам
✅ Запрещает добавление новых атрибутов, не прописанных в
Пример без
🔹 Минус: каждый объект хранит атрибуты в
Пример с
🔹 Плюсы:
1. Экономия памяти
2. Ускорение доступа к атрибутам
Когда
❌ Если нужно динамически добавлять атрибуты
❌ Если используется
Статья: https://clc.to/QjMXpg
Использовали
Библиотека питониста #буст
__slots__
в Python?__slots__
— это специальный атрибут класса, который:✅ Оптимизирует потребление памяти за счёт отказа от
__dict__
✅ Ускоряет доступ к атрибутам
✅ Запрещает добавление новых атрибутов, не прописанных в
__slots__
Пример без
__slots__
class Point:
def __init__(self, x: float, y: float) -> None:
self.x = x
self.y = y
def __str__(self) -> str:
#
point = Point(1.2, 3.4)
🔹 Минус: каждый объект хранит атрибуты в
__dict__
, что расходует памятьПример с
__slots__
class Point:
__slots__ = ('x', 'y')
def __init__(self, x: float, y: float) -> None:
self.x = x
self.y = y
def __str__(self) -> str:
#
point = Point(1.2, 3.4)
🔹 Плюсы:
1. Экономия памяти
2. Ускорение доступа к атрибутам
Когда
__slots__
НЕ стоит использовать?❌ Если нужно динамически добавлять атрибуты
❌ Если используется
__dict__
Статья: https://clc.to/QjMXpg
Использовали
__slots__
в проектах?Библиотека питониста #буст
👍13😢5❤1🔥1
😶 Алгоритмы или гугл?
С одной стороны, понимание алгоритмов даёт прочную базу и уверенность в коде. С другой — реальная работа часто требует скорости, а гуглить решения уже стало навыком.
А что важнее для junior-разработчика? Делитесь своим мнением и голосуйте! 👇
❤️ — Алгоритмы, без них никуда
🔥 — Гуглить тоже надо уметь
👍 — Главное — чтобы код работал
Библиотека питониста #междусобойчик
С одной стороны, понимание алгоритмов даёт прочную базу и уверенность в коде. С другой — реальная работа часто требует скорости, а гуглить решения уже стало навыком.
А что важнее для junior-разработчика? Делитесь своим мнением и голосуйте! 👇
❤️ — Алгоритмы, без них никуда
🔥 — Гуглить тоже надо уметь
👍 — Главное — чтобы код работал
Библиотека питониста #междусобойчик
🔥76👍53❤24🙏1
🔥 Фишка Groovy: JavaScript-скорость в Python-средах
Каждый разработчик сталкивается с дилеммой: хочется простоты Python и производительности JavaScript на клиенте.
Groovy — транслятор Python в JavaScript, который решает эту задачу:
✅ Пишите функции на привычном Python-синтаксисе.
✅ Запускайте их с JavaScript-скоростью на клиенте.
✅ Ясные сообщения об ошибках, если код не может быть транспилирован.
Транспиляция Python-функций в JS:
Выходной JavaScript-код:
Кто пользуется такими трансляторами? 🙌
Ссылка на проект: https://clc.to/9d1s3w
Библиотека питониста #буст
Каждый разработчик сталкивается с дилеммой: хочется простоты Python и производительности JavaScript на клиенте.
Groovy — транслятор Python в JavaScript, который решает эту задачу:
✅ Пишите функции на привычном Python-синтаксисе.
✅ Запускайте их с JavaScript-скоростью на клиенте.
✅ Ясные сообщения об ошибках, если код не может быть транспилирован.
Транспиляция Python-функций в JS:
from groovy import transpile
def sum_range(n: int):
total = 0
for i in range(n):
total = total + i
return total
js_code = transpile(sum_range)
print(js_code)
Выходной JavaScript-код:
function sum_range(n) {
let total = 0;
for (let i of Array.from({length: n}, (_, i) => i)) {
total = (total + i);
}
return total;
}
Кто пользуется такими трансляторами? 🙌
Ссылка на проект: https://clc.to/9d1s3w
Библиотека питониста #буст
❤7😁2👍1