Обновить
756.62

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Мониторинг Celery

Уровень сложностиСредний
Время на прочтение27 мин
Охват и читатели14K

Существует популярный подход к покрытию метриками Celery: он заключается в запуске некоторого процесса, который слушает события из специальной очереди, на основе этих событий обновляются объекты метрик, а фоновый поток сервера отдаёт собранные метрики скраперу. В этой статье подробно разберём события, их жизненный цикл, откуда и как их принимать. Также поговорим про механизм удалённого управления (remote control), какие у него есть возможности и как им пользоваться. Обсудим существующие решения, чем они отличаются, и почему вам, возможно, будет выгодно сделать своё.

Читать далее

Разбираем на винтики учебный процессор TOY

Время на прочтение11 мин
Охват и читатели4.3K

А давайте возьмём простейший процессор и напишем его эмулятор на Python. Будем кормить его бинарниками и дебажить.

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

Читать далее

«ReadStreakBot» — как я начал «кодить» с чатгпт, не умея программировать

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели17K

Давно не заходил на хабр, а тут решил зайти и с удивлением обнаружил у себя аж целых 60 подписчиков. Спасибо вам большое, что вы подписались, теперь мне даже как-то неловко, что я так долго ничего не писал про Обсидиан. Видимо теперь придётся всё же написать (мой сетап за это время перетерпел многих изменений и мне есть о чём рассказать).

Но сегодняшняя статья, к сожалению моих подписчиков, будет не про Обсидиан, она будет про телеграмм-бота, чатгпт и чтение, потому что всё это время вечерами я занимался своим пет-проектом, о котором и хочу рассказать.

Читать далее

Как быстро собрать кубик для простых задач: играемся с TinyOLAP

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.2K

Привет, Хабр. Сегодняшняя статья будет интересна тем, кто хочет собрать простой OLAP‑куб для анализа данных, чтобы понять, как он устроен и работает. Экспериментировать будем с помощью TinyOLAP, одного из немногих OpenSource движков на Python.

Читать далее

Какой язык программирования выбрать? Обзор Python

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели28K

Шестая статья нашего цикла про языки программирования посвящена Python. Её подготовила группа серверной разработки компании «Криптонит». В обзоре вы найдёте особенности, плюсы и минусы Python, сферы его применения и полезные ссылки для обучения.

Ранее наши разработчики делали обзоры Rust, Scala, JavaScript, Spark и Golang.

Читать далее

Python в Docker — собираем образ сами

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели20K

Привет!

В очередной раз собирая образ Docker своего бота для Телеграмм и используя в качестве базы официальный образ python:3.12.2-alpine3.19, обратил внимание на то, что docker scout показывает наличие свежей уязвимости в pip . Я бы не сказал, что она как‑то влияет на мое приложение, но сам факт наличия потенциальной уязвимости «на борту» контейнера с приложением, которое работает под рутом и с проброшенным сокетом Docker (НЕ лучшая практика!) натолкнул меня на мысль, как можно минимизировать этот риск?

И как?!

Оптимизация гиперпараметров за 5 секунд?

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели10K

Пока люди с самыми малыми вычислительными машинами в пустую тратят время на перебор гиперпараметров внутри библиотеки Scikit-learn – настоящие гении тайм-менеджмента выбирают TPE и Optuna. 

В этой статье мы рассмотрим самые популярные методы оптимизации Grid.Search и Random.Search, принципы Байесовской/вероятностной оптимизации, а также TPE в Optuna. В конце прописали небольшой словарик с функциями, атрибутами и объектами фреймворка, а также привели наглядный пример использования. 

Читать далее

Способы обхода GIL для повышения производительности

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели8.4K

Привет, Хабр!

Global Interpreter Lock в Питоне предотвращающает одновременное выполнение нескольких потоков в одном процессе интерпретатора Python. Т.е даже на многоядерном процессоре многопоточные Python‑приложения будут выполняться только в одном потоке за раз. Это было введено для некой потокобезопасности при работе с объектами Python, упрощая тем самым разработку на уровне интерпретатора.

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

В этой статье рассмотрим способы обхода GIL и первый способ — использование многопроцессности вместо многопоточности.

Читать далее

Тестирование монорепозитории в Docker контейнере

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели2.1K

Хочу поделиться своим опытом реализации тестирования в монорепозитории, без затрагивания написания самих тестов ...

Читать далее

Решение систем линейных уравнений с помощью Python

Время на прочтение7 мин
Охват и читатели44K

Как‑то я наткнулась на статью, где говорилось о SymPy, а именно о возможности решения систем уравнений с ее помощью. Если кратко, то это бесплатная библиотека для символьных вычислений на языке Python. В символьных вычислениях компьютер работает с уравнениями и выражениями как с последовательностью символов, тогда как в численных оперирует приближёнными числовыми значениями.

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

Приятного прочтения )

Читать далее

Мега-Учебник Flask Глава 4: База данных (издание 2024)

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели45K

Это четвертая часть серии мега-учебника по Flask, в которой я собираюсь рассказать вам, как работать с базами данных. Тема этой главы чрезвычайно важна. Для большинства приложений потребуется поддерживать постоянные данные, которые можно эффективно извлекать, и это именно то, для чего созданы базы данных.

Начать изучение

Что скрывает под собой скрытое (латентное) пространство?

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели8.3K

Работа с латентными пространствами

Латентное пространство полезно для изучения функций данных и поиска более простых представлений данных для анализа.

Как используются латентные пространства в библиотеке eXplain-NNs?

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

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

Читать далее

Python — list/set/dict/generator comprehensions

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9.1K

Генераторы коллекций - короткий(относительно цикла for) способ создавать коллекции на основе других коллекций.

Читать далее

Ближайшие события

Топовые подходы к решению алгоритмических задач

Время на прочтение11 мин
Охват и читатели54K

Привет! Меня зовут Дмитрий Королёв, я бэкенд-разработчик в Авито. В этой статье я расскажу про ключевые аспекты и концепции работы с наиболее популярными алгоритмами и структурами данных. Это поможет и в реальных проектах, и чтобы глубже понять алгоритмические принципы. Статья подойдёт специалистам, которые хотят углубить свои знания в программировании, и укрепить навыки нахождения оптимальных решений алгоритмических задач.

Читать далее

Задача о сумме подмножеств

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели11K

Задача о сумме подмножеств в общей формулировке звучит так:

Существует множество S чисел, вопрос состоит в том, будет ли сумма некоторого подмножества от S равна заданному числу Т.

Известно, что данная задача NP-полная.

Мы будем решать эквивалентную задачу, где все числа являются натуральными.

Частным случаем задачи о сумме подмножеств является задача разбиения множества чисел:

Множество чисел S необходимо разбить на два подмножества S1 и S2, где сумма S1 равна сумме S2.

(От задачи о сумме подмножеств текущая отличается только тем, что T = SUM(S1) / 2 = SUM(S2) / 2)

Хочу предложить вам простой и элегантный способ относительно быстрого решения обеих задач методом целочисленного линейного программирования (ЦЛП). Мы получим не только точный ответ на вопрос, но и найдём искомое подмножество.

Читать далее

Индуктивная статистика: доверительные интервалы, предельные ошибки, размер выборки и проверка гипотез

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели28K

Одной из самых распространённых задач аналитики является формирование суждений о большой совокупности (например, о миллионах пользователей приложения), опираясь на данные лишь небольшой части этой совокупности - выборке. Можно ли сделать вывод о миллионной аудитории крупного мобильного приложения, собрав данные 100 пользователей? Или стоит собрать данные о 1000 пользователях? Какую вероятность ошибиться при анализе мы можем допустить: 5% или 1%? Относятся ли две выборки к одной совокупности, или между ними есть ощутимая значимая разница и они относятся к разным совокупностям? Точность прогноза и вероятность ошибки при ответе на эти и другие вопросы поддаются вполне конкретным расчётам и могут корректироваться в зависимости от потребностей продукта и бизнеса на этапе планирования и подготовки эксперимента. Рассмотрим подробнее, как параметры эксперимента и статистические критерии оказывают влияние на результаты анализа и выводы обо всей совокупности, а для этого смоделируем тысячу A/A, A/B и A/B/C/D тестов.

Читать далее

Как мы делаем опенсорс курсы для программистов от программистов

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели41K
Мы разочаровались в курсах по программированию и поэтому сделали свои собственные. Не для вайтишников, а для типичных разрабов. В процессе нас хакнул инфлюенсер и забанил сервер телеграма.

Покоцанные, но не сломленные, мы представляем проект, над которым работали полтора года по ночам. Курсы по программированию с задачами в online IDE и прагматичной теорией. Никаких сертификатов и гарантий трудоустройства. Сплошной хардкор и опенсорс!


Читать дальше →

Реализация взаимодействия с БД через Middleware в Telegram-ботах

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели18K

Когда я начинал писать своих первых ботов с использованием базы данных, их код был очень плохим: он расходовал лишние ресурсы, а также была плохая архитектура проекта. Поэтому я хочу поделиться с вами своими знаниями, чтобы вы не наступали на те грабли, на которые наступал я. В проекте бота, который будет использован в качестве примера в данной статье, я использовал такие технологии, как aiogram, SQLAlchemy, alembic и Docker. В качестве СУБД выступает PostgreSQL. Приятного чтения!

Читать далее

PIP — Загрузка пакетов python для офлайн установки

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели47K

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

Читать далее

Tutorial: в gigachat появился function calling

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9K

Недавно в документации к API GigaChat появился раздел, посвящённый работе с функциями, аналогично тому, как это реализовано в ChatGPT. Идея заключается в том, что модели передаётся информация о доступных ей функциях, и в зависимости от запроса пользователя модель может обратиться к этим функциям и добавить их результат к промту для генерации ответа.

Данный функционал ещё не доступен в gigachain и доступен через API только для модели "GigaChat-Pro-preview", и я хочу поделиться своим первым опытом его использования.

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

В моём примере, помимо информации о погоде, ассистент будет получать из гугл-таблицы цены на запрошенные продукты, и передавать их пользователю.

Читать далее

Вклад авторов