Как стать автором
Обновить
332.68

Python *

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

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

Сервис проверки пользовательских файлов «powered by pytest»: нужно повозиться, но оно того стоит

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

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

Пользователю нужно возвращать информацию "что не так с файлом": какую проверку не прошел файл и где конкретно в файле проблемные данные.

Эта задача - про качество данных и очень напоминает тестирование. Так почему не использовать фреймворк тестирования pytest, и не написать тесты на каждый проверяемый аспект и для каждого типа файлов? Однако, есть небольшое "но". проверка должна быть реализована в качестве сервиса, чтобы встраиваться в более широкий процесс обработки пользовательских документов.

Давайте посмотрим, как заставить pytest работать внутри сервиса. Это не так тривиально, как может показаться на первый взгляд.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 7

Новости

Краткий обзор техник векторизации в NLP

Уровень сложности Простой
Время на прочтение 21 мин
Количество просмотров 1.8K

Как переводчик-редактор, я интересуюсь темой NLP и автоматизации рутины бюро переводов. Изучая вопрос того, как смысл слов превращается в векторы, наткнулся на эту обзорную статью. Статья мне показалась изложенной доступно, поэтому я перевел ее для удобства других коллег. Работоспособность большей части кода проверял, вроде работает (см. Jupiter Notebook). Надеюсь, будет полезно.

===

Технологии NLP — Natural Language Processing, обработки естественного языка — позволяют компьютерам обрабатывать человеческий язык, понимать его значение и контекст, а также связанные с ним эмоциональную окраску и намерения, и далее, использовать эти данные для создания чего-то нового.

Как сделать слова понятными для компьютеров? Используется векторизация. Рассмотрим несколько техник такой векторизации.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 0

Где в Западной Европе самый низкий НДФЛ?

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

В большинстве западных стран применяется прогрессивная шкала налогообложения про которую ходит много легенд (вполне обоснованных, но есть нюансы) какие большие налоги получаются по сравнению с Россией с плоской шкалой 13%. В этой статье мы обзорно рассмотрим налоговые системы десяти стран Европы (в целях простоты рассматриваются только страны Западной Европы и из рассмотрения исключаются карликовые государства, а также Швейцария, потому что там всё слишком сложно): Франция, Германия, Италия, Испания, Ирландия, Нидерланды, Бельгия, Португалия, Австрия, Великобритания.

Рассматривать будем НДФЛ. На мой взгляд, это самый субъективный налог, так как пенсионные, страховые и прочие отчисления конвертируются непосредственно в некую твёрдую сумму (например, пенсии, которую будет человек получать в старости). А вот именно НДФЛ идёт в некий "общий котёл", на который потом финансируются правительство, органы правопорядка, система образования и т. д. Читателям статьи следует держать в уме, что в Европе принято указывать сумму зарплаты не только до вычета НДФЛ, но и до вычета других отчислений, поэтому данную статью нельзя использовать для оценки итоговой суммы к выплате на руки, только для сравнения подоходного налога.

Читать далее
Всего голосов 14: ↑5 и ↓9 -4
Комментарии 17

Создаём собственную систему поиска фильмов на основе проекта Андрея Карпати

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 4.7K
image

В апреле 2023 года Андрей Карпати, один из основателей OpenAI и бывший директор по ИИ в Tesla, поделился своим занятным проектом выходного дня – системой поиска и рекомендации кино.

Её пользовательский интерфейс откровенно прост и предлагает две основных функции: блок поиска, в котором можно искать кино по названию, и вывод списка из 40 похожих фильмов при клике по интересующему.

Несмотря на популярность этого проекта, Карпати, к сожалению, пока не поделился с публикой его исходным кодом.

И вот почему
Источник

Chaturvedi: «Может, откроете исходный код проекта?»

Andrej Karpathy: «Даже не знаю. Он такой страшный, что мне стыдно».


Так что запасайтесь попкорном и будем воссоздавать его сами на основе OpenAI и векторной базы данных!
Читать дальше →
Всего голосов 41: ↑41 и ↓0 +41
Комментарии 1

Истории

Архитектура fast api приложений. Внедрение зависимостей

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

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

Читать далее
Всего голосов 4: ↑1 и ↓3 -2
Комментарии 5

Decky Notifications: как переизобрести KDE Connect и перенести уведомления в Steam Deck

Время на прочтение 12 мин
Количество просмотров 1.8K

Недавно в мои руки попала портативная игровая консоль Steam Deck. Замечательное устройство, которое полностью поглощает внимание. В этом я вскоре нашел минус: телефон генерирует уведомления и приходится откладывать приставку, чтобы посмотреть сообщение.

Хочу играть и не проверять телефон, но при этом боюсь пропустить что-то важное. И я нашел способ решение этой задачи. В этой статье расскажу, как мне пришлось полностью перебрать протокол KDE Connect, чтобы написать плагин, который переносит уведомления в Steam Deck. Подробности под катом!
Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 7

Фильтр нецензурной лексики за 5 минут

Время на прочтение 5 мин
Количество просмотров 2.5K
Привет, Хабр.

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

Анализирование


Сперва я должен бы как-то разбивать текст на части, чтобы потом сравнивать его с нецензурной лексикой. Решение нашлось очень просто. Я составил список запрещенных слов и стал проходится циклом по введенному тексту, разбивая его на куски размером с каждое запрещенное слово.
Читать дальше →
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 14

О динамическом программировании на пальцах

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

Как динамическое программирование может упростить нашу жизнь? Как можно оптимизировать решение задач?

Сегодня мы разберем динамическое программирование на пальцах с примерами на Python!

Усаживайтесь поудобнее, леди и джентльмены!

Вперед!
Всего голосов 20: ↑15 и ↓5 +10
Комментарии 17

Пишем консольное приложение для работы с базой данных на Python

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

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

Читать далее
Всего голосов 9: ↑5 и ↓4 +1
Комментарии 3

Я календарь переверну: использование Workalendar для определения календарных дней

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 611

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

На связи Горбачёв Никита и Скиданова Анна, участники профессионального сообщества NTA.

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

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

Узнать больше
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

VPN по кнопке

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

Сейчас довольно часто нужно включать VPN. На Android, IOS и Windows у меня получалось находить программы, которые по одной кнопке его хорошо подключают. Но даже в них, во-первых, есть реклама, во-вторых, есть лимиты, а в-третьих (по крайней мере, с бесплатной версией) бывает такое, что приложение говорит, что всё сработало, а трафик либо вообще не идёт, либо идёт в обход VPN-а.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 9

Профилирование асинхронного Python

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

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

Для асинхронного python-кода существует конечное количество специфических "узких мест", которые лучше перечислить заранее.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 3

Вероятно, вы неправильно используете метод __init__ в Python

Время на прочтение 8 мин
Количество просмотров 23K

Автор статьи обращает внимание на проблему, которая заключается в использовании метода __init__ для сложной логики создания объектов, что приводит к разрастанию и усложнению кода. Статья предлагает использовать вспомогательные методы, чтобы разделить логику создания объектов на более мелкие и понятные части. Это упростит код и облегчит понимание того, как объекты создаются и инициализируются.

Читать далее
Всего голосов 19: ↑14 и ↓5 +9
Комментарии 19

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

Сказ о том, как я интерпретатор Brainfuck'а писал

Время на прочтение 3 мин
Количество просмотров 1.6K

Рассказываю о том, как писал интерпретатор языка Brainfuck на Python (с показом исходного кода и его объяснения).

Читать далее
Всего голосов 8: ↑3 и ↓5 -2
Комментарии 9

Лексикографический симплекс-метод

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

Лексикографический симлекс-метод.

Решение задачи линейного программирование симлекс-методом и лексикографическим симлекс-методом на Python!

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 3

16-, 8- и 4-битные форматы чисел с плавающей запятой

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

Уже лет 50, со времён выхода первого издания «Языка программирования Си» Кернигана и Ритчи, известно, что «числа с плавающей запятой» одинарной точности имеют размер 32 бита, а числа двойной точности — 64 бита. Существуют ещё и 80-битные числа расширенной точности типа «long double». Эти типы данных покрывали почти все нужды обработки вещественных чисел. Но в последние несколько лет, с наступлением эпохи больших нейросетевых моделей, у разработчиков появилась потребность в типах данных, которые не «больше», а «меньше» существующих, потребность в том, чтобы как можно сильнее «сжать» типы данных, представляющие числа с плавающей запятой.

Я, честно говоря, был удивлён, когда узнал о существовании 4-битного формата для представления чисел с плавающей запятой. Да как такое вообще возможно? Лучший способ узнать об этом — самостоятельно поработать с такими числами. Сейчас мы исследуем самые популярные форматы чисел с плавающей запятой, создадим с использованием некоторых из них простую нейронную сеть и понаблюдаем за тем, как она работает.

Читать далее
Всего голосов 118: ↑117 и ↓1 +116
Комментарии 94

Make It Right! Максимум пользы, минимум проблем: рекомендации по написанию API автотестов на Python

Время на прочтение 17 мин
Количество просмотров 3.9K

Привет, Хабр! Меня зовут Катерина, я инженер по автотестированию в команде онлайн-кинотеатра PREMIER и сегодня я хотела бы поделиться с вами своим опытом в написании API автотестов на Python. Я работаю в сфере автотестирования уже довольно давно и на практике встречаю проекты из разных сфер деятельности (банкинг, ритейл, телекоммуникации, строительство, развлечения и др.) зачастую, работая над ними, я сталкивалась с одной общей проблемой - код автотестов был тяжелым в понимании и плохо масштабируемым. Приходилось его капитально рефакторить, а это совсем невесело;) В этой статье  я хочу поделиться советами, как сделать ваш код более «чистым», легким в понимании и расширении. Мне всегда хочется думать, что тот, кто будет работать с моим кодом в будущем, будет думать обо мне и моём коде в положительном ключе, а не ругаться на него. Если вы разделяете мою философию, прошу под кат.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 7

Передаем данные с одноплатника Repka Pi (или Raspberry Pi) в интернет по GSM связи через модуль SIM868 и GPRS протокол

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

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

Но что, если вы собираете автономно работающее устройство с микрокомпьютером, такое как как радиоуправляемый вездеход, робот присутствия, устройство управления шлагбаумом, систему IoT, турникет или что-то подобное?

Было бы неплохо оснастить это устройство чем-то, похожим по функциональности на смартфон. Тогда вы смогли бы определять его координаты GNSS, обмениваться данными через GPRS, Bluetooth или SMS, а также просто позвонить на свое устройство по телефону и поговорить с ним (или с тем, кто стоит рядом).

Еще не так давно все это было реализовать довольно затруднительно, но сейчас доступны недорогие модули на базе SIM868, в которых есть все необходимое.

В этой статье мы расскажем о том, как настроить обмен данными по каналам GPRS мобильных провайдеров между микрокомпьютерами Raspberry Pi или Repka Pi с сервером, размещенном в интернете. Для обмена будем использовать модуль GSM/GPRS/GNSS Bluetooth HAT.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 5

Четыре способа оптимизации ПО

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

Преждевременная оптимизация может оказаться корнем всех зол, а запоздалая — корнем безысходности. Каким бы быстрым ни становилось аппаратное обеспечение, мы находим способы писать медленные программы. И зачастую проявляется это не сразу. Пользователи могут годами не обращать внимания на проблему в производительности ПО, пока она не становится очевидной, что порой происходит в течение одного дня.
Читать дальше →
Всего голосов 64: ↑59 и ↓5 +54
Комментарии 11

Как я за месяц написал интерпретируемый язык программирования на Python

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

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

Предыстория

Мне 14. Обучаясь на втором году Яндекс Лицея, нужно было написать несколько проектов. Первым из них стал проект на PyQT5. Я долго думал над идеей и вспомнил, что летом я хотел создать свой язык, но у меня этого не получилось (Тогда я не понимал как работает парсер и абстрактное синтаксическое дерево, поэтому забросил). И вот, мне пришла идея - сделать свой язык программирования и написать для него IDLE (т.к. тема проекта все таки QT). Ещё полгода назад я изучал асинхронность и многопоточность, поэтому именно одну из этих идей я хотел воплотить в своём языке. В данной статье я хотел рассказать устройство интерпретируемых языков и как их создать.

Читать далее
Всего голосов 39: ↑33 и ↓6 +27
Комментарии 42

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

Работа

Python разработчик
120 вакансий
Data Scientist
69 вакансий