Статьи о программировании(Python, Django, Golang)
14 subscribers
145 photos
5 videos
1 file
159 links
Телеграм канал сайта https://gadjimuradov.ru/
Download Telegram
Forwarded from PythonTalk
JetBrains наконец-то опубликовали результаты своего большого ежегодного опроса 👏🏻
В этот раз интересной инфы как-то меньше.

▫️Python по прежнему на втором месте по популярности после JS (у JetBrains так всегда). Но популярность Python при этом растёт, а у JS в динамике падает.

▫️Чаще всего Python применяют для интеграций с апишками, автоматизации внутренней логики, обработки данных и AI. А меньше всего для графики и блокчейна.

▫️49% разработчиков используют ChatGPT, 26% GitHub Copilot. Остальные инструменты сильно отстают.

🍩 Поддержать канал 🫶
Грустная правда о чистом коде и чистой архитектуре

Любители Боба Мартина, вам лучше не читать этот пост 🙃

В начале осени я набрал группу на личное менторство, чтобы помочь ребятам устроиться на первую работу Python Backend разработчиком или вырасти в зарплате и грейде (jun -> middle, middle -> senior). Многие уже устроились, и я консультирую их на испытательном сроке, делясь опытом, направляя ход мысли и подсказывая, как лучше выстроить процесс работы над фичей.

Соответственно, я вижу, как выглядит реальный production код обычных российских IT компаний. И я не удивлен.. Всего 20% проектов написаны качественно: с применением SOLID, DRY, разбиением на слои, логированием и др.. Остальные 80% проектов это что-то с чем-то...

В коде в открытом виде хранятся секреты для доступа к базам данных

Присутствуют грубые нарушения DRY, когда одни и те же участки кода размером 30+ строк гуляют между разными модулями

Напрочь отсутствует логирование и лишь изредка присутствуют print'ы, в том числе с распечаткой секретов

Отсутствует разбиение приложения на слои

Отсутствуют кастомные исключения для каждого слоя вплоть до того, что юзер может получить исключение с информацией от SQLAlchemy

Причем всё это — довольно большие проекты с 50-150К+ строками кода, в продакшене... Никакими DDD и чистой архитектурой не пахнет. Поэтому, кстати, о них так редко спрашивают на собеседованиях.

Вывод простой: учите базу языка, фреймворка и базы данных + SQL. Этого достаточно, чтобы хорошо показать себя на собеседовании.

Артём Шумейко
Please open Telegram to view this post
VIEW IN TELEGRAM
OpenAI анонсировала модель o3

Достижения в тестах

Рейтинг 2700+ на CodeForces

Модель достигла уровня топовых программистов, показав способность решать сложные алгоритмические задачи. CodeForces — это одна из самых известных платформ для соревнований по программированию, где подобный рейтинг позволяет войти в элиту мировых программистов.

Судя по бенчмаркам, эта модель может кодить на уровне сеньора.
OpenAI анонсировала модель o3

Достижения в тестах

Рейтинг 2700+ на CodeForces

Модель достигла уровня топовых программистов, показав способность решать сложные алгоритмические задачи. CodeForces — это одна из самых известных платформ для соревнований по программированию, где подобный рейтинг позволяет войти в элиту мировых программистов.

Судя по бенчмаркам, эта модель может кодить на уровне сеньора.

96,7% точности на математическом тесте AIME 2024

AIME (American Invitational Mathematics Examination) — это математическая олимпиада, известная своей сложностью. Данный результат близок к идеальному, что демонстрирует выдающиеся способности модели в решении задач высокого уровня.

87,7% на вопросах уровня PhD GPQA Diamond

Модель успешно отвечает на вопросы, требующие глубокой теоретической подготовки, эквивалентной докторантуре. Этот результат отражает сильную компетенцию в генерации точных и сложных ответов.

71,7% на SWE-bench (тестирование в области программной инженерии)
SWE-bench — это тестовый набор задач для оценки уровня профессиональных знаний в программной инженерии. Модель превосходит большинство участников с реальным опытом работы в индустрии, демонстрируя понимание архитектуры программного обеспечения, алгоритмов и структур данных.

25,2% на сверхсложном EpochAI Frontier Math (рост с 2%)

EpochAI Frontier Math — это тест для оценки ИИ на сложнейших задачах, выходящих за рамки стандартных математических навыков. Прогресс модели с 2% до 25,2% подчеркивает значительное улучшение в решении задач, которые традиционно считались трудными даже для ИИ.

Прорыв в логическом мышлении

87,5% на закрытой оценке ARC-AGI

ARC-AGI (Abstraction and Reasoning Corpus for AGI) — это один из самых строгих и закрытых тестов, предназначенных для оценки уровня абстрактного мышления и способности к рассуждениям. Высокий результат свидетельствует о том, что модель способна решать задачи с минимальными данными и без прямого обучения на них.

Улучшение производительности в 3 раза по сравнению с моделью o1

Новая архитектура и оптимизация позволили достичь тройного прироста производительности, делая модель более эффективной в решении разнообразных задач.

Подтвержденная эффективность на совершенно новых задачах


Модель продемонстрировала способность решать задачи, с которыми ранее не сталкивалась, что подтверждает её универсальность и отсутствие зависимости от заучивания ответов.

Без запоминания — чисто логические способности
Достижения основаны на способности к рассуждению, а не на запоминании данных. Это важное отличие от моделей, которые лишь "запоминают" шаблоны решений.

Технические достижения

Создана на основе масштабированного обучения с подкреплением (RL)
Использование RL позволило улучшить способность модели оптимизировать свои решения, адаптироваться к сложным сценариям и извлекать пользу из тренировок на сложных задачах.

Самая ресурсоемкая модель на этапе тестирования

Для достижения текущих результатов использовались масштабные вычислительные мощности, что позволило модели демонстрировать выдающиеся способности даже в самых сложных тестах.

Представлена эффективная версия o3-mini

Вместе с основной моделью представлена уменьшенная версия o3-mini. Она разработана для пользователей, которым требуется высокая производительность при меньших ресурсах.

Устанавливает новые стандарты по всем техническим метрикам

o3 превосходит предыдущие модели и конкурентов по всем основным показателям, устанавливая новые стандарты качества и производительности.

Влияние на индустрию

Открывает новую эру в масштабировании ИИ
Масштабирование вычислительных мощностей и архитектуры модели позволяет значительно расширить границы возможностей искусственного интеллекта.

Демонстрирует эффективность увеличения вычислительной мощности

Результаты подтверждают, что вложения в вычислительные ресурсы и усовершенствование архитектуры модели оправданы и ведут к реальному прогрессу в ИИ.

Ожидается снижение цен на токены

Внедрение новых технологий и оптимизации может привести к удешевлению обработки запросов, что сделает доступ к ИИ более демократичным.
🆚⚡️ Python FastAPI vs Go: Кто быстрее?

Выбираете между Python FastAPI и Go (Golang) для разработки веб-приложений? Это видео разбирает их производительность и помогает определиться с выбором технологии. Вот ключевые моменты теста! 👇

Что тестировали?
1️⃣ Базовый тест производительности: простые запросы и ответы.
2️⃣ Работа с базой данных Postgres: проверка скорости взаимодействия.
3️⃣ Кэширование через Memcache: нагрузка в сложных сценариях.

🏁Результаты
Go
🔥 Отличная производительность при высоких нагрузках.
💪 Минимальные задержки при работе с базой данных и кэшированием.
Подходит для приложений, где критичны скорость и масштабируемость.

FastAPI (Python)
⚡️ Удобство разработки и читабельность кода.
💻 Богатая экосистема Python-библиотек.
🚀 Хорошо справляется с умеренными нагрузками, но уступает Go в пиковых ситуациях.

Что выбрать?
Выбирайте Go, если нужна высокая производительность и низкие задержки. Это идеальный выбор для микросервисов и высоконагруженных систем.
FastAPI подойдёт, если вы цените скорость разработки и интеграцию с библиотеками Python. Отличный выбор для прототипов и приложений средней нагрузки.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Go vs Python: Раунд 2

На этот раз в центре внимания видео — облачные технологии: Kubernetes, OpenTelemetry, Prometheus, Postgres и S3. Оба языка протестированы в условиях микросервисной архитектуры.

Go:
⚡️ Молниеносный отклик и минимальная нагрузка на ресурсы.
💪 Устойчивость под нагрузкой.

Python:
🚀 Быстрый старт и удобство разработки.
🐢 Уступает Go в скорости при высоких нагрузках.

📊 Итог:
Go побеждает на длинных дистанциях, Python выигрывает на коротких. Выбор за вами! 👊
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python/ django
🖥 Огромный сборник гайдов по Python с примерами кода поможет вам начать изучение языка с самого начала и отточить навыки на тысячах задач!

В этом сборнике вы найдете:
- Примеры автоматизации различных процессов с использованием Python.
- Инструкции по интеграции с множеством популярных приложений, таких как Telegram и YouTube.
- Руководства по созданию чат-ботов, которые возьмут на себя рутинную работу.
- Методы визуализации данных.
- Работа с графикой, изображениями и видео.
- Основы машинного обучения и создание своих первых нейронных сетей.

Это лучший ресурс для новичков в IT-сфере, который станет вашим надежным помощником на пути к освоению программирования.

📌 Ссылка

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как узнать размер генератора в Python?

В Python часто возникает задача определить размер генератора без необходимости извлечения всех его значений. Это полезно, если вы работаете с большими потоками данных и хотите избежать избыточного расхода памяти.

Пример с len()
Некоторые итераторы, такие как range, поддерживают вызов len():


len(range(10000)) # 10000


Однако генераторы не имеют длины, и попытка вызвать len() вызовет ошибку:


gen = (x ** 2 for x in range(10000))
len(gen) # TypeError: object of type 'generator' has no len()


Стандартное решение: преобразование в список
Один из способов получить размер генератора — это преобразовать его в список:


gen = (x ** 2 for x in range(10000))
print(len(list(gen))) # 10000


Этот подход работает, но имеет серьёзный недостаток: он требует загрузить все значения генератора в память. Если генератор очень большой, это может привести к нехватке памяти.

Более эффективный подход: подсчёт с помощью sum
Чтобы избежать лишнего расхода памяти, можно подсчитать количество элементов в генераторе с использованием sum():


gen = (x ** 2 for x in range(10000))
print(sum(1 for _ in gen)) # 10000


Этот метод обходит генератор "лениво", не создавая дополнительных списков, что делает его идеальным для работы с большими потоками данных.

Резюме
- Используйте len() только для итераторов, поддерживающих его (например, `range`).
- Для генераторов избегайте преобразования в список, если важна экономия памяти.
- Используйте sum(1 for _ in gen) для эффективного подсчёта элементов генератора.

👉 @BookPython
Forwarded from Python/ django
👩‍💻 slowapi — это библиотека для Python, предназначенная для ограничения количества запросов (rate-limiting) в веб-приложениях, разработанных на основе FastAPI! Она использует библиотеку limits для реализации функциональности ограничения запросов.

🔍 Особенности slowapi включают возможность настройки лимитов на основе различных критериев (например, IP-адреса, уникального идентификатора пользователя или других параметров). Она поддерживает конфигурацию различных стратегий ограничения, включая фиксированные временные окна и токен-ведро.

🌟 slowapi позволяет легко интегрировать обработку превышения лимита запросов с возвратом соответствующих HTTP-ответов, таких как 429 (Too Many Requests).

🔐 Лицензия: MIT

🖥 Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Golang
👣 Эта статья обсуждает проблему N+1 запросов — частую причину снижения производительности в веб-приложениях!

🌟 Автор объясняет, как стандартный подход ленивой загрузки ассоциированных данных может привести к множественным запросам к базе данных, что становится проблемой в сложных моделях с многочисленными связями.

🌟 Для решения этой проблемы предлагается двухфазный подход: сначала загружаются все необходимые данные за минимальное количество запросов (batch loading), затем данные отображаются с использованием подготовленных объектов. Статья иллюстрирует, как этот метод применяется в Go, и подчеркивает его преимущества, такие как снижение количества запросов и улучшение производительности.

🔗 Ссылка: *клик*

@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Денис Аникин
Техлид, Райффайзенбанк

Я ускорил всё, кроме себя

В своём докладе мне хочется дать слушателям самый полный и понятный список лучших решений для всего в бэкендах. Это будет небольшая энциклопедия лучших решений, многие из которых я и коллеги как следует «притёрли» в продакшене. Фреймворки, библиотеки, сервера, даже немного десктоп софта, сравнения — будет всё, а на что-то мы и вовсе посмотрим с неожиданных сторон.

https://www.youtube.com/watch?v=nVUwGn2Ky40