Обновить
727.62

Python *

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

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

HowTo: базовая геоаналитика

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

Хочу поделиться примером‑инструкцией как получить инсайты из геоданных без регистрации, смс (только open‑source и бесплатные инструменты: OSM, python, Портал открытых данных Правительства Москвы, DataLens).

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

Читать далее

Введение в MLflow

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

MLflow - это инструмент для управления жизненным циклом машинного обучения: отслеживание экспериментов, управление и деплой моделей и проектов. В этом руководстве мы посмотрим, как организовать эксперименты и запуски, оптимизировать гиперпараметры с помощью optuna, сравнивать модели и выбирать лучшие параметры. Также рассмотрим логирование моделей, использование их в разных форматах, упаковку проекта в MLproject и установку удаленного Tracking Server MLflow.

Читать далее

Находим случайный seed, решающий задачу с LeetCode

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

У меня есть хобби — решать задачи LeetCode непредназначенным для этого образом, часто при помощи запутанных однострочников. Такие самостоятельно накладываемые ограничения делают задачки интереснее и заставляют искать нестандартные решения.

Одним из ежедневных челленджей LeetCode была такая задача (я немного упростил её для понятности):

Есть список из $k$ уникальных строк битов, каждая из которых имеет длину $k$. Сгенерировать новую строку длиной $k$, отсутствующую в этом списке.

Например, если у нас есть список "010", "110", "111", то возможным решением будет "001". Задача с LeetCode имеет большой набор тестов — 183 тестовых сценариев с $1≤k≤16$, а точную формулировку задачи можно найти здесь.

Я решил её, подобрав такое случайное порождающее значение (seed), что случайно генерируемые строки битов проходили бы все тестовые сценарии. Вот код решения:

class Solution:
    def findDifferentBinaryString(self, nums: List[str]) -> str:
        random.seed((69299878 + sum(ord(c)*(i*j+111) for (i, n) in enumerate(nums) for (j, c) in enumerate(n))) % 999999999)
        return ''.join(random.choice('01') for _ in nums)

Можете попробовать это решение самостоятельно (оно должно работать, если LeetCode не обновил свой набор тестов. Если это произошло, сообщите мне об этом).

Ниже я расскажу, как это сделал.
Читать дальше →

Моржовый оператор := в Python

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

Python постоянно развивается: с каждой новой версией появляются различные оптимизации, активно внедряются новые инструменты. Так, в Python 3.8 появился моржовый оператор (:=), который стал причиной бурных споров в сообществе. О нем и пойдет речь в этой статье.

А начнем мы с истории о том, как моржовый оператор довел Гвидо ван Россума, создателя Python, до ухода с должности "великодушного пожизненного диктатора" проекта по разработке языка.

Читать далее

CurlFetch2Py – Эффективное преобразование CURL и FETCH команд в структурированные Python объекты

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

В этой статье мы рассмотрим, как использовать библиотеку CurlFetch2Py для преобразования CURL и FETCH запросов в структурированные Python объекты.

Эти инструменты часто применяются для выполнения HTTP-запросов и взаимодействия с веб-сервисами и API, обеспечивая обмен данными между клиентом и сервером.

Однако синтаксис этих запросов не всегда удобен для Python-разработчиков. Сегодня я покажу, как библиотека CurlFetch2Py упрощает работу с такими запросами, позволяя легко интегрировать их в Python-код.

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

Читать далее

Быстрая оценка эффекта рекламы/события на ключевые показатели: Python + Causal Impact

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

Приветствую, меня зовут Владислав Поляков, я аналитик данных в Сбербанке. Сегодня я хочу поделиться, пожалуй, самым простым и быстрым способом оценки эффекта рекламы/события на ключевые показатели. Способ заключается в использовании библиотеки pycausalimpact для Python. Документация к библиотеке.

Вводные:

Данные: Данные ЦБ РФ по ключевой ставке и объему выданных кредитов с 2013 года.

Что будем оценивать?: Как повышение ключевой ставки повлияло на объем выданных кредитов.

Как будем оценивать?: С помощью библиотеки pycausalimpact для Python

Читать далее

BitImageTool — пиктограммы для кнопок и панелек приложений, закодированные в ASCII

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

Статья о том, как легко делать графические кнопки для панелей инструментов, не таская за приложением гору бинарных ресурсов с картинками. Этот метод платформонезависимый и может быть использован в различных языках и средах, позволяющих работать с графикой и растровыми изображениями. Ниже приводятся примеры для C# (WinForms / WPF), JavaScript, Python.

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

Тогда возникла идея - рисовать одноцветные изображения, кодировать их в строку и хранить прямо в свойствах объекта (например - кнопки). Самый простой вид кодировки - когда шесть точек изображения превращаются в шестибитный код, соответствующий некоторому символу из ASCII таблицы с заданным базовым смещением...

Читать далее

Как мы перешли с оффсетной пагинации на курсорную, или о проблемах динамической фильтрации

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

Привет, меня зовут Надежда и я Backend-разработчик в HiFi-стриминге Звук! Занимаюсь всем, что связано с подкастами и немузыкальным контентом (а вы знаете, что в Звуке есть аудиокниги? Разработка нашей команды! PodcaTS, привет!). Какое-то время я также техлидила сервисы, которые отвечали за отдачу мета-информации и всего, что связано с аудио (артисты, релизы, треки, подкасты, аудиокниги) в Звуке.

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

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

Читать далее

Как ускорить интеграцию API с помощью библиотеки и продвигать свои услуги

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

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

Читать далее

Опыт автоматизации рутины: подсчет спецификации при помощи python

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

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

Читать далее

Создание меню/кнопок в pyTelegramBotAPI на основе SQL запроса

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

В данной статье планирую поделиться с вами своей наработкой, которая позволяет создавать меню и кнопки вашего Telegram бота на основе данных хранящихся в БД.

Реализовывать все это будем на Python и нам потребуются библиотеки.

Читать далее

Кастомные email-оповещения в Apache Airflow

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

Пролог

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

Этакое желание (каламбурное определение) – достичь чего-то невозможного или близкого к невозможному с помощью программирования.

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

Давайте почитаем-с

Как я в 35 пытался стать Python-разработчиком, и почему у меня [пока] ничего не вышло

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

Мои родители инженеры микроэлектронной техники, мой младший брат ML-разработчик уровня lead, друзья — системные и бизнес-аналитики. А я — гуманитарий. Мне не повезло. С характером, способностями, обстоятельствами, мало ли чем ещё. В какой-то момент я понял, что так больше не может продолжаться и решил в свои тогда ещё 34 года «залететь в ИТ». Выбрал курсы по Python на степике, потому что это самый популярный и довольно простой язык. Вдохновился историями «старокодящих», которые смогли. Почитал новости о диком дефиците программистов в России. И с головой ушёл в обучение.

Что могло пойти не так?

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

1400 строк кода без программирования: как я собрал ИИ-бота с помощью Claude

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

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

Результат превзошел мои ожидания и показал, насколько далеко продвинулись возможности ИИ в генерации кода за последний год. Видео демки:

Читать далее

Часть 2. Алгоритм Тарьяна для приведения нелинейной системы уравнений к вычисляемой последовательности подстановок

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

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

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

Читать далее

Асинхронные увeдомления в Telegram: простое решение с новой библиотекой

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

Привет!

Сегодня я расскажу вам о том, как упростить процесс отправки уведомлений в Telegram с помощью новой библиотеки — easy_async_tg_notify. Если вы, как и я, часто сталкиваетесь с необходимостью отправки сообщений через Telegram от различных сервисов (проектов, скриптов), то это руководство будет для вас полезным.

Читать далее

Как написать мод для TrackMania 2020 и не запутаться

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

Привет, Хабр! Меня зовут Вова, я разработчик в Selectel. В прошлом году серии TrackMania исполнилось 20 лет. Это игра моего детства и мне захотелось «размять свои юные олдскулы», посмотреть, что изменилось, и применить новые навыки.

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

Шесть причин выучить Julia в 2024 году

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


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

А чтобы подогреть ваш интерес, мы подготовили небольшую статью (опирались на этот материал, спасибо авторам, и добавили много тезисов на основе нашего опыта с Julia) с описанием основных причин, почему вы должны срочно заинтересоваться Julia и подать заявку на Летнюю школу. Приятного чтения!

Читать далее

Как я создал архиватор из задачки с техсобеса: сжатие файлов с помощью RLE

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

Привет, меня зовут Рома. Я работаю в отделе спецпроектов KTS на позиции Python backend-разработчика. 

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

Читать далее