Обновить
512K+

Python *

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

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

Её величество Сортировка

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

Можно ли сортировать несортируемое? Почему декоратор в питоне называется "total_ordering"? Как отсортировать тексты по смыслу? Надо ли сохраняться, перед использованием "compare function"?

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

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

Читать далее

Изучение различных видов сортировок

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

Цель данной лабораторной работы – посмотреть на алгоритмы с различной асимптотикой, научиться анализировать время работы алгоритмов и включать разные степени оптимизации.

Читать далее

Обзор библиотеки RxPY

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

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

Сегодня поговорим о хорошей библиотеке для управления потоками данных в Python – RxPY — реализации Reactive Extensions для нашего любимого языка. В версии 4.0.4 эта библиотека получила ряд улучшений, и сегодня мы разберем её основной функционал.

Читать далее

Как извлечь квадратный корень из перестановки чисел?

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

В этой статье мы исследуем проблему извлечения квадратного корня из перестановки p, иными словами задачу нахождения всех таких перестановок x, что x \cdot x = p. Будет сформулирован критерий возможности извлечения квадратного корня, алгоритм нахождения корней и формула их подсчёта в общем виде.

Читать далее

Асинхронный SQLAlchemy 2: простой пошаговый гайд по настройке, моделям, связям и миграциям с использованием Alembic

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

Наконец-то пришло время взяться за то, что я давно планировал — подробный гайд по асинхронной версии SQLAlchemy 2.0 в стиле ORM. В этой серии статей я подробно расскажу обо всех аспектах: от создания моделей и установления связей между ними до миграций с Alembic и взаимодействия с данными в базе. Мы будем шаг за шагом разбирать ключевые моменты работы с асинхронной базой данных, что позволит вам глубже понять SQLAlchemy и применить эти знания на практике.

Для начала, давайте разберёмся, что такое SQLAlchemy и почему каждый разработчик, работающий с реляционными базами данных (такими как SQLite, PostgreSQL, MySQL и т. д.), должен знать о ней. После этого — настройка. Мы будем работать с PostgreSQL, но не переживайте: код, который мы напишем, универсален для всех реляционных баз данных. Мы начнем с базовой настройки SQLAlchemy для асинхронного взаимодействия, а затем перейдём к созданию таблиц в современном декларативном стиле.

Читать далее

Я ускорил генерацию blurhash в 3̶6̶ 8̶7̶ 128 раз

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

Старую собаку новым трюкам не обучишь, вот и я взялся за старое. Blurhash — это компактный способ представления размытой превьюшки изображения в виде ASCII-строки. Разработан финской компанией Wolt (аналог Delivery Club). Давно хотелось внедрить такое к себе в API, чтобы любой клиент мог более плавно и изящно делать загрузку контент на своем сайте. Но сколько я на него смотрел — всегда не давала покоя скорость работы, уж больно медленно и «в лоб» он был написан. Но вот время пришло наконец-то разобраться, что же он так медленно работает.

Читать далее

Бизнес-сериал: формируем BI-систему в строительстве почти в прямом эфире. Часть II

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

Привет, друзья!

Продолжаем нашу серию статей о создании BI-системы в компании Sminex. Расскажем о наших дальнейших шагах по построению хранилища с якорной моделью.

Жмяк 🐤

Проигрыватель видео с поддержкой транскрипта

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

Как и многих пользователей Хабра меня интересует вопрос, как можно повысить эффективность изучения иностранных языков. Один из наиболее часто рекомендуемых методов — смотреть фильмы на изучаемом языке. И, естественно, я им пользуюсь. Периодически меня посещают мысли о необходимости оптимизации этого подхода. Сначала я нашел себе проигрыватели, которые поддерживают одновременное отображение субтитров на двух языках: субтитры на изучаемом языке отображаются как обычно внизу экрана, а вверху отображаются субтитры на русском. Но этого мне показалось мало. Я пошел искать проигрыватель, который мог бы отображать не только текущие субтитры, но и «транскрипт» — последовательность, включающую как текущий фрагмент субтитров, так и соседние, что бы из них можно было сложить связанный более крупный фрагмент текста. Это может быть удобно если:

— при просмотре было что‑то непонятно, нужно прочитать субтитр, а он уже скрыт и при этом не хочется перематывать назад и ловить пропущенный кусок

— субтитры разбиты на фрагменты таким образом что каждый из них не является законченной фразой и для того что бы понять смысл нужно иметь перед глазами две‑три строки субтитров

Похожая функциональность есть, например, на YouTube и на Корсэре.

Однако после некоторых изысканий я к своему удивлению обнаружил что этой фичи нет ни в одном Windows‑проигрывателе. (UPDATE: этой фичи в стандартных проигрывателях нет в нужном мне виде, т. е. с параллельным отображением транскрипта на двух языках)

У меня как раз чесались руки попробовать что из себя представляет связка Cursor+o1. Так спонтанно родилось решение использовать такой проигрыватель в качестве объекта для экспериментов с этими инструментами. Сразу скажу, что навыков разработки у меня практически нет (если не считать минимальных фрагментарных представлений о разработке для веба).

Читать далее

Автоматизируем постинг мемов в Telegram без расходов на аренду сервера

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

Предпосылки, или «куда делось всё место на телефоне»

Одним прекрасным днем, обнаружив, что на новом свежем купленном айфоне из 256гб осталось примерно половина места после переноса данных со старого, я задался вопросом — а куда делось место?
Потребление по категориям расставило точки над i — 70гб было занято приложением Photos. Приложение Photos обрадовало наличием 15 000 объектов в галерее.

Быстро проскроллив часть галереи, я пришел к трем фактам:
— Большинство объектов — сохраненные откуда‑то мемы;
— У меня нет желания их удалять;
— У меня нет желания платить за облачное хранилище.

Спустя недолгое время раздумий, было найдено решение, позволяющее сохранить бесценные богатства и повеселить друзей — постить мемы в телеграм.

Под катом история о том, как постить мемы ненапряжно, без необходимости использования телеграм ботов и без затрат на сервера.

Читать далее

Поиск соседей в двумерном массиве

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

Поиск соседей в программировании — это процесс поиска элементов, расположенных рядом с заданным элементом в структуре данных (например, матрице или графе). Этот подход применяется для анализа взаимосвязей между элементами, определения их свойств на основе окружения и выполнения различных алгоритмов (например, поиск пути, кластеризация, фильтрация данных).

Читать далее

Как мы запустили автоматическую модерацию видео в объявлениях Авито

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

Привет! Я Владимир Морозов, senior DS engineer в команде модерации Авито: в основном занимаюсь автомодерацией видео, но развиваю и другие проекты. В статье рассказываю, с какими трудностями мы столкнулись при модерации видео в условиях небольшого количества данных, и как их решили. Думаю, материал будет полезен всем, кто занимается похожими задачами в крупных продуктовых компаниях.

Читать далее

Программирование для подростков: выбор направления и советы преподавателей

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

Подростковый возраст – идеальное время для обучения детей чему-то новому. Кодинг не стоит считать исключением. Есть несколько подходящих и относительно простых языков и вспомогательных сред: Скретч и Роблокс, Python, в том числе в связке с Minecraft, C# и JavaScript. Разбираемся, с чего стоит начать.

Мы твердо уверены в следующем: если ребенку нравится играть в компьютерные игры, в том числе онлайн, то это не повод для ограничений, а основа развития ценных навыков. Нужно подтолкнуть школьника к тому, чтобы начать программировать: достаточно показать, скажем, что тот же «Питон» может применяться для моддинга в Майнкрафте, а C# – для создания игр на кроссплатформенном движке Unity. Но это лишь примеры.

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

Читать далее

Пример создания Full Stack проекта c использованием функционального тестирования как инструмента дизайна (продолжение)

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

Пример создания Full Stack проекта, используя функциональное тестирование как инструмент дизайна(продолжение)

API часть и релиз проекта

Продолжение...

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

Визуальные трансформеры (ViT)

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

С момента своего появления в 2017 году в публикации Attention is All You Need трансформеры стали доминирующим подходом в обработке естественного языка. В 2021 году в статье An Image is Worth 16x16 Words трансформеры были успешно адаптированы для задач компьютерного зрения. С тех пор для компьютерного зрения было предложено множество архитектур на основе трансформеров.

В этой статье мы рассмотрим трансформер зрения (Vision Transformer, ViT) в том виде, в котором он был представлен во второй статье. Она включает в себя открытый код ViT, а также концептуальные объяснения компонентов. Реализация ViT, рассмотренная в статье, выполнена с использованием пакета PyTorch.

Читать далее

Как я написал бота для саммари telegram каналов

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

Всем привет!
Меня зовут Азрет, я - CTO в AAA (читается как "трипл-эй"). Мы разрабатываем LLM приложения для бизнеса. Решаем разнообразные задачи - оптимизация внутренних процессов за счет ИИ, маркетинговые исследования и запуск новых продуктов. Но запрос на бота, про которого я хочу рассказать, внезапно пришел от фаундера нашего агенства.

Ситуация понятна - я подписан на кучу телеграм каналов, я не успеваю их читать, мне от этого неприятно, я испытываю FOMO. А я бы хотел не пропустить ничего важного, тратить как можно меньше времени и иметь все в одном месте.

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

В этой обзорной статье - детали архитектуры и стека.
Кому интересно - прошу под кат.

Читать далее

BI для оценки полезности BI: огранка логов по методу АЛРОСА

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

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

Читать далее

Как меняется ландшафт Земли сквозь призму генеративных моделей

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

Повоевав в рамках учебного курса с генеративными моделями машинного обучения, хочу поделиться вариантом решения одной интересной задачи. Различные геосервисы позволяют получить спутниковые снимки поверхности земли в одной и той же точке в разные месяцы и годы. По ним можно проследить характер изменений: пустыри зарастают, водоемы заболачиваются, люди покидают одни места и осваиваются в других. Но можно ли понять по снимку, как изменится местность в будущем? Есть ли в спутниковых изображениях контекст, который способна извлечь модель для предсказания этих изменений — об этом статье.

Читать далее

35 образовательных игр и приложений по программированию для детей

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

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

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

Перейдем к основной теме: сегодня хотим рассмотреть 35 игр и приложений по программированию для детей. В подборке собраны:

- Среды, в которых можно обучиться блочному кодингу (13 штук);

- Игры, полезные для начинающих питонистов (9);

- Развивающие платформы для обучения веб-разработке с использованием HTML, CSS и JavaScript (10);

- Обучающие приложения, предназначенные для подростков (3).

Читать далее

Усиление PostgreSQL с помощью PL/Python

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

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

Сегодня мы прокачаем PostgreSQL, добавив в него Python. А именно — PL/Python. Это расширение позволяет писать функции на Python прямо внутри базы данных. Лично для меня это как объединение двух лучших миров: любимого PostgreSQL и могучего Python.

PL/Python — это про то, когда стандартного SQL мало. Когда надо сделать что-то действительно интересное: сложные расчеты, массивы данных, или интеграция с аналитикой прямо в базе. А самое крутое — можно тянуть любые Python-библиотеки.

Для начала нужно просто установить расширение в PostgreSQL.

Читать далее

Миграция thonет конвертировать файлы кон поддерживаться в 2025 году

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

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

Моя программа на Python имеет открытый исходный код. Вы можете прочитать, использовать, обновлять, добавлять свои собственные функции.
Программа преобразует структурированный текст в другой структурированный текст, и находится в стадии разработки.
Чтобы понять эту программу, вам нужно знать основные операции в Python, текст, list и dictionary.
Я пишу этот текст для сетевых инженеров, которые изучают Python, я хочу показать вам направление развития.
Я добавил как можно больше комментариев в текст для лучшего понимания.
И в Juniper Firewall, и в PaloAlto используются объекты адресов (set address) и группы объектов адресов (set address-group).
В обоих брандмауэрах объекты адресов используются как IP адреса источника или IP адреса назначения в политиках или правилах.
Здесь мы видим объекты адресов (set address). Слева Juniper, справа те же объекты, преобразованные в PaloAlto.

Читать далее