Обновить
756.62

Python *

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

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

Спасите пароль: сказочная реализация схемы разделения секрета Шамира на Python

Время на прочтение6 мин
Охват и читатели16K
Этот алгоритм, использующий язык Python и Схему разделения секрета Шамира, защищает ваш мастер-пароль от хакеров и вашей собственной забывчивости.


Для безопасного хранения множества уникальных паролей многие из нас используют менеджеры паролей. Вся их работа по сути завязана на мастер-пароле. Этот пароль защищает все остальные пароли, и, таким образом, несёт весь риск на себе. Любой, кто подберёт его или получит к нему доступ, может притвориться вами в самый неподходящий момент. Естественно, вы стараетесь сделать свой мастер-пароль максимально сложным, а затем запоминаете или где-то ещё фиксируете его.
Читать дальше →

Группировка вебсокет соединений для асинхронного фреймворка Starlette

Время на прочтение6 мин
Охват и читатели4.3K
Cегодня мы с вами напишем решение для фреймворка Starlette, которое позволит группировать открытые вебсокет соединения.

Вступление


Starlette довольно молодой фреймворк, и какие-то «плюшки» для него приходится писать самостоятельно. В предыдущей статье я показал как можно реализовать JWT сессии и «Djangoподобную» структуру, сегодня мы рассмотрим как группировать вебсокет соединения.
Читать дальше →

Нейросеть — обучение без учителя. Метод Policy Gradient

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

Доброго времени суток, Хабр


Настоящей статьей открываю цикл статей о том, как обучать нейронные сети без учителя.
(Reinforcement Learning for Neuron Networks)

В цикле планирую сделать три статьи по теории и реализации в коде трех алгоритмов обучения нейронных сетей без учителя. Первая статья будет по Policy Gradient, вторая по Q-learning, третья статья заключительная будет по методу Actor-Critic.

Приятного чтения.

Статья Первая — Обучение без учителя методом Policy Gradient
(Policy Gradient for Reinforcement Learning)


Введение


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

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

Алгоритму обучающемуся без учителя достаточно только давать обратный отклик на его действия или решения — хороши они были или нет.
Читать дальше →

ICQ New: инструкция по разведению ботов

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


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

Некоторое время назад в ICQ сильно обновилась платформа ботов. Она стала более дружелюбной, понятной и удобной. С помощью Python-библиотеки от разработчиков мы и будем создавать своего первого бота.
Читать дальше →

Как починить все самому, если баг-репорты игнорируются: отлаживаю wkhtmltopdf под Windows

Время на прочтение28 мин
Охват и читатели14K
wkhtmltopdf — это один из самых мощных инструментов для генерации PDF. Он позволяет использовать в генерируемом документе все возможности HTML и CSS. «Под капотом» у него движок WebKit, так что результат почти в точности соответствует выводу «Print to PDF», встроенному в Chrome. Судя по вопросам на Stack Overflow, wkhtmltopdf используется для генерации карт, графиков, бухгалтерских отчётов, подарочных сертификатов, и практически любого другого контента, который в конечном счёте должен оказаться распечатанным на бумаге.



Мой давний заказчик с помощью wkhtmltopdf генерирует PDF-инвойсы в своём веб-магазине. При печати в «шапке» инвойса должен отображаться чёрно-белый логотип, тогда как на сайте используется цветной. Очевидное решение — подменить изображение в CSS @media print { ... } Но тут обнаружилась проблема: если изображение не используется вне @media print, то оно не загружается и при печати (этот баг можно заметить и в окне Print Preview самого Chrome).
Читать дальше →

Обзор гибридной системы мониторинга Okerr

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

Два года назад я уже делал пост Простой failover для вебсайта про okerr. Сейчас есть некоторое развитие проекта, а еще я опубликовал исходный код серверной части okerr под открытой лицензией, поэтому и решил написать на хабр этот небольшой обзор.



[ full size ]


Кому это может быть интересно


Вам это может быть интересно если вы работаете небольшой командой или вообще один. У вас нет мониторинга и вы не уверены, точно ли он нужен. Либо же вы пробовали какой-то популярный серьезный мониторинг "для больших мальчиков", но для вас он как-то "не взлетел", или работает в почти дефолтной конфигурации и не сильно изменил вашу жизнь. А еще — если вы точно не планируете выделять целого сотрудника (а то и отдел) на то, чтобы тот хотя бы пару часов в день мониторил в дашборд мониторинга или настраивал его.


Чем необычен okerr


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


Okerr — это гибридный мониторинг


При внутреннем мониторинге на наблюдаемых машинах крутится "агент", который передает данные на сервер мониторинга (например, свободное место на дисках). При внешнем — сервер по сети выполняет проверки (например, ping или доступность вебсайта). У каждого подхода свои ограничения. Okerr использует оба варианта. Проверки внутри серверов выполняются очень легким (30Kb) агентом или вашими собственными скриптами и приложениями, а сетевые — через сенсоры okerr в разных странах.

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

Почему список в кортеже ведет себя странно в Python?

Время на прочтение3 мин
Охват и читатели22K
В языках программирования меня всегда интересовало их внутреннее устройство. Как работает тот или иной оператор? Почему лучше писать так, а не иначе? Подобные вопросы не всегда помогают решить задачу «здесь и сейчас», но в долгосрочной перспективе формируют общую картину языка программирования. Сегодня я хочу поделиться результатом одного из таких погружений и ответить на вопрос, что происходит при модификации tuple'а в list'е.
Читать дальше →

Улучшения для генеративно-состязательных сетей (GAN)

Время на прочтение8 мин
Охват и читатели4.2K
Для прикладных задач, редко когда требуется искусственная генерация данных. Тем не менее алгоритм состязательной-генеративной модели (GAN) поражает и даёт возможность создавать сервисы рисования и даже фотографию не существующего человека.
На Хабре есть несколько статей разбора алгоритма с теоретической точки зрения. Здесь я бы хотел сконцентрироваться на коде, а именно заострить внимание на улучшениях и трюках, которые сделают процесс обучения быстрее, более контролируемым и улучшают качество генерируемых примеров.

За основу взят пример из документации tensorflow и код на keras. Они оба отлично работают, но как убедитесь ниже, не идеальны. Идеи для улучшения в основном взяты из статьи Tips for GAN и из исследования по улучшению GAN.

Подготовка


Для работы потребуется всего 2 библиотеки: numpy и tensorflow и несколько библиотек для отрисовки GIF изображения прямо в jupyter notebook.
Читать дальше →

Панорама-FM или как увидеть все радиостанции сразу с помощью SDR

Время на прочтение38 мин
Охват и читатели23K
Привет, Хабр.

Наверное все, хоть немного интересующиеся радиосвязью, знают что с помощью SDR-приемника возможно принимать и обрабатывать широкую полосу спектра радиодиапазона. Собственно, отображением спектра в таких программах как HDSDR или SDR# никого не удивить. Я покажу как построить псевдо-3D спектр принимаемых станций с помощью RTL-SDR, GNU Radio и примерно 100 строк кода на языке Python.



Также мы возьмем приемник посерьезнее, и посмотрим на весь FM спектр 88-108МГц.
Продолжение под катом.
Читать дальше →

Data Science Digest (June 2020)

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


Приветствую всех!

Встречайте свежий выпуск дайджеста полезных материалов из мира Data Science & Machine Learning и не забывайте подписываться на наш телеграм-канал.
Читать дальше →

Питонисты, прекратите использовать квадратные скобки для получения значений из словаря

Время на прочтение4 мин
Охват и читатели18K
Привет, Хабр! представляю вашему вниманию перевод статьи «Stop Using Square Bracket Notation to Get a Dictionary’s Value in Python» автора Jonathan Hsu.

Выходим за рамки традиционного метода и защищаем свой код


Словарь — это несортированный набор ключей и значений. Это значит, что:

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

Хранение изображений с помощью Django/Django REST

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

Проблема


Мне в ходе разработки часто приходится работать с моделями, в которых должны быть изображения. Для удобной организации я использую древовидную структуру папок. В целом, Django предоставляет инструмент для работы с изображениями. Например, вот вопрос на Хабр Q&A о том, как работать с пикчами в Django: использовать ImageField


class Article(models.Model):
     title = models.CharField(max_length=255)
     content = models.TextField()
     img = models.ImageField(upload_to='/article', height_field=100, width_field=100)

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


image

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

Как сделать генератор цитат за час

Время на прочтение3 мин
Охват и читатели9.6K
Прелесть генераторов в том, что можно автоматизировать свой труд и сэкономить время. Они полезны для приложений, веб-сайтов, блогов, гороскопов. Техника будет сама напоминать вашим читателям про ваш продукт, не используя одну и ту же назойливую картинку. А «готовка» генератора займет 40-60 минут. Попробуйте, господа!

image

Создать машину, которая работает как InspiroBot.me — легко!

Впервые о InspiroBot AI написал Techcrunch в 2015 году, рассказав, что такой инструмент хорошая замена человеческого труда по созданию философских постов для социальных сетей.

InspiroBot о себе заявляет: «Я — искусственный интеллект, призванный генерировать неограниченное количество уникальных вдохновляющих цитат для бесконечного обогащения бессмысленного человеческого существования.» Другими словами, автор бота — Педер Джоргенсен (Peder Jørgensen), загрузил словарь и фоновые картинки, чтобы генерировать бесконечное количество цитат.

Вот как это работает, по рассказу автора блога в техфоруме Steemit.com:
Слова разделены на семантические группы и прописаны виды фраз по смыслу, например:

  1. ]<strive-to><time/occasion> — <стремление к> <результату> <время/событие>
    ]<as-relationship> — <причина> <объект1> <к> <глагол> <объект2> <как отношение> <описание> <сущность2> <как есть> <объект1>

    Для подбора таких грамматических структур существует разные инструменты, например: Link Grammar Parser, где есть циклические отношения между словами — правила синтаксиса. По такому же принципу работает корректор пунктуации в Word Office. Кроме того, есть словарь на английском языке — Word Net, где части речи сгруппированы в наборы синонимов.
Читать дальше →

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

Все финансовые рынки мира в API Яху Финанс

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели80K
В этой статье я расскажу об API агрегатора финансовых данных Yahoo! Finance. В рассказе есть один нюанс — официальное API Яху Финанс было закрыто три года назад, однако практически сразу же появилась его недокументированная работоспособная версия, которая жива до сих пор. Хочу в исследовательских целях рассказать об использовании этой работоспособной версии подробнее.
Тем более, что список рынков, данные с которых можно получать через Яху Финанс огромен. На текущий момент в нем 79 стран, включая и Россию.


Apple Inc. (AAPL) на сайте и в API Яху Финанс
Разбор API Yahoo! Finance

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

Время на прочтение4 мин
Охват и читатели20K
Анализ больших данных в Python переживает эпоху возрождения. Она началась с библиотеки NumPy. Эта библиотека, кстати, является одной из составных частей тех инструментов, о которых пойдёт речь в этом материале. В 2006 году тема обработки больших данных постепенно набирала обороты, этот процесс ускорился с появлением Hadoop. Потом появилась библиотека pandas со своими структурами данных DataFrame, которые обычно называют просто «датафреймами». В 2014 году большие данные стали мейнстримом, в этом же году появилась платформа Apache Spark. В 2018 году вышла библиотека Dask и другие средства для анализа данных в Python.



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

Интервальное прогнозирование временных рядов с помощью рекуррентных нейронных сетей с долгой краткосрочной памятью…

Время на прочтение58 мин
Охват и читатели46K
Продолжение цикла публикаций статей про прогнозирование временных рядов. На повестке – перевод статьи How to Develop Multi-Step LSTM Time Series Forecasting Models for Power Usage.
Читать дальше →

Распознавание русского алфавита: от сбора датасета до создания GUI

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

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


Спойлер: в результате должно получиться вот так:


image

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

Как GPU-вычисления буквально спасли меня на работе. Пример на Python

Время на прочтение12 мин
Охват и читатели76K
Привет, Хабр!

Сегодня мы затрагиваем актуальнейшую тему — Python для работы с GPU. Автор рассматривает пример, тривиальный в своей монструозности, и демонстрирует решение, сопровождая его обширными листингами. Приятного чтения!


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

Как правильно: Мане или Моне? Отвечает нейросеть

Время на прочтение4 мин
Охват и читатели2.9K
Художников Эдуарда Мане и Клода Моне путали и при жизни (вот очень интересная статья на Арзамас). Что неудивительно, ведь они оба родоначальники импрессионизма и писали в схожей манере. Слушая на coursera курс по Convolutional neural networks, я решила попробовать сделать модель, определяющую, кем из художников написана картина.
Читать дальше →

wxpython. Доступность еще доступнее

Время на прочтение3 мин
Охват и читатели3.6K
Всем привет.

Хотя многие приложения все больше переходят в разряд WEB, я хочу в данной статье поднять тему о прикладном ПО.

А точнее о замечательной библиотеке GUI wxpython, которая является оберткой над WX Widgets.

Она очень удобна, проста в освоении, имеет множество компонентов для построения графических интерфейсов любой сложности.

А самое главное — она самая доступная в плане accessibility.

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

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

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