Обновить
1024K+

Python *

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

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

Python или Java: что выбрать родителю для школьника?

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

Кто-то выберет Python, потому что в нем начало и конец класса или функции обозначается простым отступом (табуляцией), а в Java для разделения блоков кода применяют надоевшие круглые скобки. А кому-то друзья-инсайдеры в программировании посоветуют учить Java. Среди программистов популярно мнение, что новичку лучше сначала освоить компилируемый язык. Скорее всего, категорический ответ на вопрос: «что лучше java или python» дать нельзя. У каждого свои цели и своя ситуация. Поговорим об особенностях двух языков программирования, которые делают их предпочтительными в тех или иных обстоятельствах.

Читать далее

Правильное подключение к БД: почему, зачем и как

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


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


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


Статья рассчитана на начинающих и всех, кто интересуется этой темой.

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

Как поиск жилья заставил менеджера вспомнить программирование и уйти из Яндекса

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

Привет, Хабр! Я разработал помощника по поиску жилья HomeBro, который помог десяткам тысяч людей найти новый дом. Расскажу, с чем я облажался, а с чем – нет.

В 2019ом году я работал продактом в Яндекс.Погоде и подумывал, что было бы здорово запилить что-то свое. Начал смотреть, какие есть большие рынки и в чем их боль. Перебирая варианты, вспомнил, каким изнуряющим был для меня поиск съемного жилья. 

Читать далее

Sketch: искусственный интеллект на службе аналитика данных в Pandas

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

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

С вами Data Scientist и участник профессионального сообщества NTA Максим Алёшин.

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

Вот уже постепенно появляются библиотеки для Python, позволяющие использовать подобные чат‑боты прямо из Jupyter Notebooks или IDE. Сравнительно недавно вышел релиз библиотеки Sketch, которая предоставляет функции интеллектуального помощника по написанию кода для пользователей Pandas. Он, помимо прочего, понимает контекст данных, значительно повышая релевантность предложений. Библиотека доступна в PyPi и готова к использованию сразу после установки.

Больше о Sketch

Mela: асинхронный фреймворк на Python для сервисов, работающих с RabbitMQ

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

WARNING: длинная вступительная часть. Если хотите перейти сразу к делу - листайте до Getting Started.

Читать далее

Реализация функции потерь Triplet Loss в Python (функция тройных потерь)

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

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

Читать далее

Elsie: программируемые презентации

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

Как известно, существует целый ряд инструментов для создания информативных технических слайдов, и у этих инструментов есть свои недостатки. TLDR:

  • При работе с WYSIWYG-решениями (напр., PowerPoint) требуется выполнять вручную массу монотонной работы, они не слишком хорошо поддерживают подсветку синтаксиса, не предоставляют качественных инструментов для точной отрисовки сложных фигур и анимации, а также их не так просто интегрировать с контролем исходников.
  • Декларативные инструменты (напр., Beamer или reveal.js) гораздо лучше. В них серьёзно поддерживается подсветка синтаксиса, они позволяют рисовать сложные фигуры и анимацию (в особенности Beamer) и, кроме того, с лёгкостью версионируются. Правда, ни один из используемых с ними декларативных языков (ни LaTeX, ни HTML) не дают достаточной гибкости для создания по-настоящему сложных слайдов.

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

Ах, если бы только было можно приказать компьютеру сделать именно то, что я хочу, с возможностью вынести типичные сценарии в краткие команды (чтобы не писать слишком много при выполнении простых задач). Что ж, я программист, а всё это звучит очень по-нашему. Почему бы просто не написать программу, которая генерировала бы за меня слайды?
Читать дальше →

Как разработать модель выявления связанных компаний на основании анализа транзакций

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

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

Читать далее

Все DETRы мира: выкидываем и возвращаем энкоры. Часть 1

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

Материал для ТГ-канала “Варим ML”

Я - большой фанат задачи детекции, она мне нравится по всем критериям. Она самая интересная концептуально - одновременно нужно и искать объекты, и определять их тип. Классификация целых изображений скучновата и не так часто применима на практике (по крайней мере в медицине), а сегментация мне кажется нудноватой - ну их, эти конкретные пиксели. Ещё статьи про детекцию - самые интересные для меня в техническом плане. Мне нравится разбираться в разных видах архитектур - anchor-based и anchor-free, one-stage и multi-stage, а ещё я очень люблю разные крутые идеи, которые улучшают тот или иной компонент детекционного пайплайна - например, PISA для умного взвешивания разных сэмплов в лоссе, Precise RoIPooling и Deformable RoIPooling для более точного и хитрого пулинга фичей, D2Det для декаплинга задач локализации и классификации, SoftNMS для замены традиционного NMS.

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

Тем не менее, все три года идея всё-таки впилить DETR преследовала меня по пятам, тем более что за это время вышло несколько десятков статей, тем или иным образом улучшающим оригинальную архитектуру. И вот, в один прекрасный день я зачем-то решил прочитать вообще все статьи про DETRы, а заодно попробовать несколько вариаций в ММГ. Задача оказалась слегка сложнее, чем я ожидал…

Читать далее

Улучшенная эвристика при квантовании цветовой палитры

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

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

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

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

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

Читать далее

Пишем на Python как на Rust

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

Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать Rust, я обычно писал код на Python очень динамично, без подсказок типов, повсюду передавая и возвращая словари и время от времени возвращаясь к интерфейсам со «строковой типизацией». Однако, испытав на себе строгость системы типов Rust и заметив все проблемы, которые она предотвращает, я внезапно стал сильно беспокоиться всякий раз, когда возвращался к Python и не получал тех же гарантий.

Читать далее

Безопасная разработка на Python. Часть 3.О фреймворке Flask

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

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

Читать далее

Особенности асинхронности в Python

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

Привет, Хабр! Меня зовут Николай Нагорный, я работаю в Росбанке над платформой Advisors’ Axiom. В этом посте я подробно расскажу о важной фиче, которая появилась в Python 3.5 — асинхронности. Затрону основные концепции и инструменты, приведу примеры кода. Пост будет полезен новичкам для понимания основ асинхронности и, может, даже опытным разработчикам в поиске новых идей и подходов.

Читать далее

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

Поймай меня, если сможешь: руководство по обработке исключений в Python

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

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

Читать далее

Хорошая замена Celery для асинхрощины

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

Речь пойдет о библиотеки для работы с AMPQ - aio-pika. Она имеет всего в районе 1К звёзд на GitHub (по сравнению с 20К+ у Celery). Я рассмотрел абсолютно все популярные (500+ звёзд) решения и остановился именно на этом из-за активной (на текущий момент) разработке и соответствии всем моим требованиям.

Стек, который вы увидите в статье: FastAPI, RabbitMQ, aio_pika и docker. Статья будет полезна тем кто использует Celery в своих проектах, а так же тем, кто только слышал о том, что такое очереди и RabbitMQ.

Читать далее

Реализация функции потерь в Python

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

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

Существует несколько способов вычислить эту разницу. В этом материале мы рассмотрим некоторые из наиболее распространенных функций потерь.

Ниже будут рассмотрены следующие четыре функции потерь.

Читать далее

Как мы автоматизировали FTP(S) с уникальными симптомами проблемы?

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

Я автоматизировал FTPS через LFTP, потому что c этой задачей не справился Python с его великим разнообразием пакетов в "Сырном Магазине". Читайте историю из компании с примерами кода и погружением в детали проблемы.

Узнать, как автоматизировать FTPS

Асинхронный ETL-процесс на Python

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

Продолжаю цикл статей по разработке ETL-процессов на Python. На этот раз мы преобразуем синхронный etl-процесс из статьи Пишем ETL-процесс на Python в асинхронный.

Читать

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

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

Давно интересовался как можно объединить микроконтроллеры, Python и пк, и мне в голову приходила идея дополнительной клавиатуры для пользователя, которая будет заменять сочетания клавиш, всего лишь одной кнопкой. Сначала я пробовал объединить платы NodeMCU на базе ESP8266 с пк, с помощью Python. Знаний для написания скетча на ардуино у меня не было, и по гуглив, нашел язык MicroPython. Он сильно мне подошел, так как я владел базовыми знаниями Python, да и умение правильно задавать вопрос гуглу.

Читать далее

Новый синтаксис для generic-типов в Python 3.12

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

Первоначально python как язык с динамической типизацией не предполагал никакого явного описания типов используемых объектов и список возможных действий с объектом определялся в момент его инициализации (или изменения значения). С одной стороны это удобно для разработчика, поскольку не нужно беспокоиться о корректности определения типов (но в то же время осложняло работу IDE, поскольку механизмы автодополнения требовали анализа типа выражения в ближайшей инициализации). Но это также приводило к появлению странных ошибок (особенно при использовании глобальных переменных, что само по себе уже плохое решение) и стало особенно неприятным при появлении необходимости контроля типа значений в коллекциях и созданию функций с обобщенными типами. В Python 3.12 будет реализована поддержка нового синтаксиса для generic-типов (PEP 695) и в этой статье мы обсудим основные идеи этого подхода.

Читать далее