Обновить
827.26

Python *

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

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

Django ORM для начинающих | Оптимизируем запросы

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


Django ORM (Object Relational Mapping) является одной из самых мощных особенностей Django. Это позволяет нам взаимодействовать с базой данных, используя код Python, а не SQL.
Based on schegel.net

Для демонстрации опишу такую модель:

from django.db import models

class Blog(models.Model):
    name = models.CharField(max_length=250)
    url = models.URLField()

    def __str__(self):
        return self.name

class Author(models.Model):
    name = models.CharField(max_length=250)

    def __str__(self):
        return self.name

class Post(models.Model):
    title = models.CharField(max_length=250)
    content = models.TextField()
    published = models.BooleanField(default=True)
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    authors = models.ManyToManyField(Author, related_name="posts")
Читать дальше →

Hack The Box. Прохождение Rope. PWN. Форматные строки и ROP используя pwntools

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

Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox.

В данной статье собираем много много pwn, которые будем решать средствами pwntools. Думаю будет полезно читателям с любым уровнем осведомленности в данной теме. Поехали…

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)

Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Читать дальше →

Лемматизируй это быстрее (PyMorphy2, PyMystem3 и немного магии)

Время на прочтение3 мин
Охват и читатели55K
Я работаю программистом, и в том числе занимаюсь машинным обучением применительно к анализу текстов. При обработке естественного языка требуется предварительная подготовка документов, и одним из способов является лемматизация – приведение всех слов текста к их нормальным формам с учетом контекста.

Недавно мы столкнулись с проблемой больших временных затрат на этот процесс. В конкретной задаче было более 100000 документов, средняя длина которых около 1000 символов, и требовалось реализовать обработку на обычном локальном компьютере, а не на нашем сервере для вычислений. Решение на просторах интернета мы найти не смогли, но нашли его сами, и я хотел бы поделиться — продемонстрировать сравнительный анализ двух наиболее популярных библиотек по лемматизации в этой статье.


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

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

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




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

В прошлом году мне нужно было срочно подтянуть свои знания в области машинного обучения. Я менеджер продуктов для Data Science, Machine Learning и AI, или по-другому Technical Product Manager AI/ML. Одних бизнес навыков и умения разрабатывать продукты, как это обычно бывает в проектах, направленных на пользователей не в технической сфере, не достаточно. Необходимо понимать основные технические концепции индустрии ML, и если нужно, суметь самому написать пример для демонстрации продукта.

Я около 5 лет разрабатывала Front-end проекты, разрабатывала сложные веб приложения на JS и React, но машинным обучением, ноутбуками и алгоритмами никогда не занималась. Поэтому, когда я увидела новость от Отус, что у них открывается пятимесячный экспериментальный курс по Машинному обучению, я, не долго думая, решила пройти пробное тестирование и попала на курс.

В течении пяти месяцев, каждую неделю проходили двухчасовые лекции и домашние задания к ним. Там я узнала об основах ML: различные алгоритмы регрессии, классификации, ансамбли моделей, градиентный бустинг и даже немного затронули облачные технологии. В принципе, если внимательно слушать каждую лекцию, то примеров и объяснений хватает вполне для выполнения домашних заданий. Но все же иногда, как и в любом другом кодинг проекте, приходилось обращаться к документации. Учитывая мою полную рабочую занятость, учиться было достаточно удобно, так как я всегда могла пересмотреть запись онлайн лекции.
Читать дальше →

Асинхронные задания в Django с Celery

Время на прочтение11 мин
Охват и читатели79K
Перевод статьи подготовлен в преддверии старта курса «Web-разработчик на Python».




Если в вашем приложении есть какой-то длительный процесс, вы можете обрабатывать его не в стандартном потоке запросов/ответов, а в фоновом режиме.

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

3D ML. Часть 1: формы представления 3D-данных

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


Сегодня появляется все больше 3D датасетов и задач, связанных с 3D данными. Это связано с развитием робототехники и машинного зрения, технологий виртуальной и дополненной реальности, технологий медицинского и промышленного сканирования. Алгоритмы машинного обучения помогают решать сложные задачи, в которых необходимо классифицировать трехмерные объекты, восстанавливать недостающую информацию о таких объектах, или же порождать новые. Несмотря на достигнутые успехи, в области 3D ML остаются еще нерешенными ряд задач, и эта серия заметок призвана популяризировать направление среди русскоязычного сообщества.


В первой части будут рассмотрены основные формы и форматы представления пространственных данных и их особенности.

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

Как выучиться на Data Scientist: наиболее востребованные технические навыки

Время на прочтение6 мин
Охват и читатели10K
Какие технические знания становятся наиболее популярными у работодателей, а какие теряют свою популярность.

image

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

Я искал ключевые слова, которые появлялись в списках вакансий на должность «Data Scientist» в США на таких сайтах как SimplyHired, Indeed, Monster и LinkedIn. В этот раз я решил написать код, чтобы изучить все списки вместо того, чтобы искать вручную. Это решение оказалось очень успешным для SimplyHired, Indeed и Monster. Я использовал Requests и Beautiful Soup из библиотеки Python HTTP. Код с анализом вы можете увидеть в моем отчете на GitHub.

Продираться через LinkedIn оказалось в разы сложнее. Необходимо пройти процесс авторизации, чтобы просматривать точное количество списков вакансий. Я решил использовать Selenium для просмотра страниц без графического интерфейса пользователя. В сентябре 2019 года Верховный суд США выиграл дело против LinkedIn, тем самым позволив очистить данные сайта. Тем не менее, я не смог получить доступ к своей учетной записи после нескольких попыток входа. Возможно, эта проблема возникла из-за ограничения скорости. Апдейт: Я все же смог войти, но боюсь, что меня заблокируют при повторной попытке.
Читать дальше →

Интеграция .pre-commit hook в Django проект

Время на прочтение5 мин
Охват и читатели20K
Доброго дня!

Меня зовут Соболев Андрей и сегодня я вам расскажу как мы приготовили .pre-commit hook на нашем проекте.

Вступление


Для начала пару слов, о том что такое в целом хуки (hooks) и для чего они могут быть нужны. Git «из коробки» предоставляет инструмент, который умеет запускать ваши скрипты при наступлении какого-либо события (к примеру пуш на сервер и т.п.)

.pre-commit это удобная надстройка над дефолтным git pre-commit hook, которая запускает скрипты описанные в .pre-commit-config.yaml перед созданием коммита. В теории звучит просто, перейдем к практике.
Читать дальше →

Высокоскоростной Apache Parquet на Python с Apache Arrow

Время на прочтение5 мин
Охват и читатели15K
Всем салют. Уже на следующей неделе стартуют занятия в новой группе курса «Data Engineer», в связи с этим делимся с вами еще одним интересным переводом.




На протяжении всего прошлого года я работал с сообществом Apache Parquet над созданием parquet-cpp — первоклассной C++ Parquet реализации для чтения/записи файлов, подходящей для использования в Python и других приложениях для работы с данными. Уве Корн и я разработали Python интерфейс и интеграцию с pandas в рамках кодовой базы Python (pyarrow) в Apache Arrow.
Читать дальше →

Celery + asyncio

Время на прочтение2 мин
Охват и читатели27K
Привет, Хабр! Я хочу рассказать, как я решал проблему эффективного конкурентного исполнения asyncio задач в Celery.

КДПВ

Бизнес-эксперт и программирование. Совмещать нельзя разделять

Время на прочтение9 мин
Охват и читатели4.1K
Привет! Меня зовут Виктория Краснова, я не так давно писала большой пост про data-driven в нефтехимии. Но там было про сам подход и систему. Давайте сегодня поговорим о тех, кто этой системой будет пользоваться (и кто будет её улучшать). То есть о людях.

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



А теперь представьте себе, каково это — внедрять DAAS (data as a service), если ваши пользователи взаимодействуют между собой только языком Excel и Power Point. Возникает разрыв: те, кто владеет навыками программирования, не владеют предметной областью на должном уровне, чтобы предметно продемонстрировать все плюшки современных технологий, а бизнес-эксперты пребывают в состоянии недоумения из-за того, что любую известную задачу можно решить при помощи «Small Data» в лице Excel.

Для того, чтобы этот разрыв нивелировать, а в идеале вообще устранить, можно подойти к проблеме вот с каких сторон. Во-первых, набирать аналитиков со знанием SQL и Python. Во-вторых, учить существующих пользователей языкам программирования. И вроде как первый путь выглядит логичнее и проще, да? Но есть подводные камни, а именно:
Читать дальше →

Пол Грэм: «Краткость = сила»

Время на прочтение10 мин
Охват и читатели3.8K
На HackerNews сегодня подняли обсуждение статьи Пола Грэма 2002 года и мы решили воскресить её перевод из небытия.

image


«The quantity of meaning compressed into a small space
by algebraic signs, is another circumstance that facilitates
the reasonings we are accustomed to carry on by their aid.»
— Charles Babbage (1791-1871)


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

Цель языка Python — это регулярность и читабельность, но не краткость .

На первый взгляд, язык программирования скорее не должен претендовать на такое. Насколько я понимаю, краткость (succinctness, лаконичность, компактность) = сила. А если так, то делая подстановку, мы получаем:

Цель языка Python — это регулярность и читабельность, но не сила.

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

Действительно ли краткость = сила? Похоже это важный вопрос, может самый важный вопрос для тех, кто занимается разработкой языков. Я пока не уверен, что ответ на него — просто «да», но для начала это неплохая гипотеза.

Гипотеза


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

Авторизация пользователя при помощи Starlette + Vue.js

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

Вступление




Задача — создать пример авторизации пользователя с использованием фреймворков Starlette (https://www.starlette.io/) и Vue.js *, который был бы максимально комфортным разработчикам Django для «миграции» в асинхронный стек.

Почему Starlette? В первую очередь скорость. Starlette ультимативно быстр, и в тестах уступает только BlackSheep (https://pypi.org/project/blacksheep/). Во вторых Starlette весьма прост и писать на нем в силу его продуманности легко и приятно.

В качестве ORM мы будем использовать Tortoise ORM (со моделями и выборками «аля Django ORM»).

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

* Описание фронтенда на Vue.js не входит в данную заметку.
Читать дальше →

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

Как построить диаграмму Венна с 50 кругами? Визуализация множеств и история моего Python-проекта с открытым кодом

Время на прочтение11 мин
Охват и читатели33K
Всем привет, меня зовут Фёдор Индукаев, я работаю аналитиком в Яндекс.Маршрутизации. Сегодня хочу рассказать вам про задачу визуализации пересекающихся множеств и про пакет для Python с открытым кодом, созданный мной для её решения. В процессе мы узнаем, чем различаются диаграммы Венна и Эйлера, познакомимся с сервисом распределения заказов и по касательной заденем такую область науки, как биоинформатика. Двигаться будем от простого к более сложному. Поехали!



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

Как не править Python тесты

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

И вынести тестируемые результаты вне кода. Это статья об автоматизации и увеличения удобства тестирования на Python.


image


Вводная


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


Регрессионное тестирование было одним из шагов для более уверенной разработки. Его суть в сравнении вычисленных данных с последним канонизированным результатом работы программы. 


Результаты выполнения можно проверять в python коде тестов. Это близко к контексту выполнения и зачастую удобно.


Но это также может быть неудобно когда:

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

5 визуализаций, который помогут улучшить Data Story

Время на прочтение5 мин
Охват и читатели5.8K
Статья переведена в преддверии запуска курса «Разработчик Python».




Сторителлинг – один из важнейших навыков для специалистов, которые занимаются анализом данных. Чтобы доносить идеи и делать это убедительно, нужно простраивать эффективную коммуникацию. В этой статье мы познакомимся с 5 методами визуализации, которые выходят за рамки классического понимания, и могут сделать вашу Data Story более эстетичной и красивой. Работать мы будем с графической библиотекой Plotly на Python (она также доступна на R), которая позволяет создавать анимированные и интерактивные диаграммы с минимальными усилиями.
Читать дальше →

Материальный Python. Кастомные карточки с OpenGL-эффектами

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

Приветствую, уважаемые любители и знатоки Python!

В этой статье я покажу вам, как применять эффекты OpenGL к своим кастомным карточкам, если вы используете в своих приложениях такие кроссплатформенные инструменты как фреймворк Kivy и библиотеку материального дизайна для этого фреймворка — KivyMD. Погнали!

Сравниваем работу open source Python — библиотек для распознавания именованных сущностей

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

Введение


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

Для решения это задачи я опробовал десятки решений в области обработки естественного языка, в том числе решения с открытым кодом и хотел бы поделиться опытом работы с open source Python — библиотеками для распознавания именованных сущностей.

Распознавание именованных сущностей


Несколько слов о самой проблеме. Named Entity Recognition (NER) — это направление технологии обработки человеческого языка, программная реализация которой позволяет находить в речи и тексте опредмеченные категории слов и словосочетаний. Сначала это были географические наименования, имена людей, организаций, адреса, однако в настоящее время это понятие сильной расширилось и с помощью NER мы ищем в тексте относительные и абсолютные даты, числа, номера и т.д.
Выявление именованных сущностей — это «ворота» в человеческий язык, оно позволяет выявлять и обрабатывать намерения человека, устанавливать связи слов в его речи и реальным миром.

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

HackTheBox. Прохождение Patents. XXE через файлы DOCX, LFI to RCE, GIT и ROP-chain

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

Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox.

В данной статье эксплуатируем XXE в сервисе преобразования DOCX документов в PDF, получаем RCE через LFI, копаемся в истории GIT и восстанавливаем файлы, составляем ROP цепочки с помощью pwntools и находим спрятанный файл рута.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)

Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Читать дальше →

Сказка о лишнем и потерянном времени. По версии py3

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

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

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

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