Обновить
795.46

Python *

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

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

5 способов сделать Python-сервер на Raspberry Pi. Часть 2

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

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



Статья рассчитана для начинающих.
Читать дальше →

Кодировки, шифр сдвига, брут хешей и создание картинки с помощью PIL python. Решение задач с r0от-мi Cryto. Часть 1

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

Данная статья содержит решений заданий Encoding ASCII и Encoding UU направленные на кодировки, Hash Message Digest 5 и Hash SHA-2 — на нахождение прообраза хеша, Shift cipher — шифр сдвига, и Pixel Madness — на составление картинки.

Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

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

Яндекс.переводчик для Linux на Python+GTK3

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

Приветствую хабражителей!


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


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


image


Вначале был translate-shell...

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

Сортировки распределением

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


В сортировках распределением элементы распределяются и перераспределяются по классам до тех пор, пока массив не отсортируется.
Траффик

Градиентный спуск по косточкам

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

В интернете есть много статей с описанием алгоритма градиентного спуска. Здесь будет еще одна.


8 июля 1958 года The New York Times писала: «Психолог показывает эмбрион компьютера, разработанного, чтобы читать и становиться мудрее. Разработанный ВМФ… стоивший 2 миллиона долларов компьютер "704", обучился различать левое и правое после пятидесяти попыток… По утверждению ВМФ, они используют этот принцип, чтобы построить первую мыслящую машину класса "Перцептрон", которая сможет читать и писать; разработку планируется завершить через год, с общей стоимостью $100 000… Ученые предсказывают, что позже Перцептроны смогут распознавать людей и называть их по имени, мгновенно переводить устную и письменную речь с одного языка на другой. Мистер Розенблатт сказал, что в принципе возможно построить "мозги", которые смогут воспроизводить самих себя на конвейере и которые будут осознавать свое собственное существование» (цитата и перевод из книги С. Николенко, «Глубокое обучение, погружение в мир нейронный сетей»).


Ах уж эти журналисты, умеют заинтриговать. Очень интересно разобраться, что на самом деле представляет из себя мыслящая машина класса «Перцептрон».

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

Python 3.8: Что нового и как этим пользоваться?

Время на прочтение5 мин
Охват и читатели79K
Следующий перевод подготовлен специально для «питонистов», которым интересно наверняка интересно почитать о новых функциях Python 3.8. В преддверии запуска нового потока по курсу «Разработчик Python» мы не смогли пройти мимо этой темы.

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




Моржовый оператор (Оператор присваивания)


Мы знаем, что вы этого ждали. Это ожидание восходит еще к тем временам, когда в Python намеренно запретили использовать «=» в качестве оператора сравнения. Некоторым людям это понравилось, поскольку они больше не путали = и == в присваивании и сравнении. Другие сочли неудобной необходимость повторять оператор, либо присваивать его переменной. Давайте перейдем к примеру.
Читать дальше →

Генерация PEG-парсера

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

Теперь, когда я набросал основу самописного парсера, давайте перейдём к генерации его методов из грамматики, как я и обещал. Также покажу как реализовать packrat-парсер с помощью декоратора @memoize.



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

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

Deploy приложений с помощью Docker Swarm

Время на прочтение9 мин
Охват и читатели16K
Онлайн рекомендательная система видео-контента, над которой мы работаем, является закрытой коммерческой разработкой и технически представляет собой многокомпонентный кластер из собственных и open source компонентов. Целью написания данной статьи является описание внедрения системы кластеризации docker swarm под staging-площадку, не нарушая сложившийся workflow наших процессов в условиях ограниченного времени. Представленное вашему вниманию повествование разделено на две части. Первая часть описывает CI/CD до использования docker swarm, а вторая — процесс его внедрения. Кто не заинтересован в чтении первой части, может смело переходить ко второй.
Читать дальше →

Стохастический градиентный спуск(SGD) для логарифмической функции потерь(LogLoss) в задаче бинарной классификации

Время на прочтение4 мин
Охват и читатели13K
Предыдущая часть (про линейную регрессию, градиентный спуск и про то, как оно всё работает) — habr.com/ru/post/471458

В этой статье я покажу решение задачи классификации сначала, что называется, «ручками», без сторонних библиотек для SGD, LogLoss'а и вычисления градиентов, а затем с помощью библиотеки PyTorch.
Читать дальше →

Windows 10 + Python = VS Code + WSL

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

Microsoft… Технологических локомотивов нашего времени. Ни для кого не секрет что они крутые, а также, что они поглощают все больше и больше… Всего. К счастью последнее время они только радуют меня своим потенциалом. А после выступления Satya Nadella, где он рассказал миру о том, что Windows больше не является основным продуктом компании, так как они положили курс на внедрение своих API…. Повсюду

Для разработчиков ПО они так же не скупятся. C#, Azure, Visual Studio… Но сейчас пойдет речь о Python, ведь для него местечко здесь тоже пригрели.

Кратко о WSL


С обновлением Windows появилась возможность использовать такую штуку, как WSL (Windows Subsystem for Linux). Не так давно появилась WSL2 с ОЧЕНЬ крутыми доработками. WSL2 использует новейшую и самую новую технологию виртуализации для запуска ядра Linux внутри упрощенной служебной виртуальной машины. Это значит, что такие атрибуты, как изоляция и замедление работы здесь отсутствуют.
Читать дальше →

Реализация PEG парсера

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

Вдохновленный лишь частичным пониманием PEG, я решил попробовать его реализовать. Результат может получиться и не самым лучшим среди парсеров PEG общего назначения — их уже много (например, TatSu написан на Python и генерирует код Python) — но это хороший способ разобраться в PEG. В дальнейшем я хочу заменить им текущую реализацию парсера в CPython.



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

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

Реализация паттерна Page Object на Python + pytest

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

Когда я начинал изучать автоматизацию тестирования, не мог понять — “что такое Page Object и как его реализовать на Python + pytest?”. Штудируя интернет, нашел реализацию на других языках и фреймворках: обучающие статьи, которые были непонятны для меня. Поэтому решил написать этот разбор. Идея — показать реализацию на Python + pytest и объяснить ее доступным языком.


Что такое Page Object


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


Каждую веб-страницу проекта можно описать в виде объекта класса. Взаимодействие пользователя описываются в методах класса, а в тестах остается только бизнес-логика. Данный подход помогает избежать проблем с тестами при изменении верстки веб-приложения. Вам необходимо поправить только класс, описывающий страницу.

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

5 способов сделать Python-сервер на Raspberry Pi. Часть 1

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

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



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

Статья расчитана для начинающих, профи вряд ли найдут здесь что-то кардинально новое, ну а новичкам в Linux надеюсь, будет полезно. Для тех кому интересно, продолжение под катом.
Читать дальше →

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

Система контроля библиотеки на Flask-Potion, Часть 0: готовим всё, что понадобится

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

Введение


В своей работе я уже некоторое время использую Flask-Potion — фреймворк, основными достоинствами которого являются: весьма удобная интеграция с SQLAlchemy моделями, автогенерация crud-эндпоинтов, наличие клиента potion-client (весьма удобного, если пишешь API сервиса, использование которого понадобится в другом сервисе).


Я заметил, что на русском языке о flask-potion почти ничего нет, но думаю кому-то это данный фреймворк может показаться интересным.


Вместо простой обзорной статьи на этот фреймворк я решил написать несколько статей о создании системы контроля для библиотеки "Furfur" на основе Flask-Potion.


Данная система должна уметь делать следующее:


  • Хранить информацию о книгах (isbn, название, описание, автор и т.д.)
  • Хранить информацию о пользователях (читатели и библиотекари)
  • Оформлять выдачу книги из библиотеки на определённый срок с возможностью продления

В этой системе мы воспользуемся следующими инструментами:


  • PostgreSQL
  • Flask, Flask-SQLAlchemy, Flask-JWT, Flask-Potion, Flask-Migrate
Читать дальше →

Нативное редактирование Jupyter Notebooks в VS Code

Время на прочтение3 мин
Охват и читатели55K
С октябрьским релелизом расширения Python, мы рады объявить о поддержке нативного редактирования Jupyter Notebooks в Visual Studio Code! Теперь вы можете напрямую редактировать файлы .ipynb и получать интерактивность Jupyter Notebooks с полной мощью VS Code.

Вы можете управлять исходным кодом, открывать несколько файлов и использовать такие функции, как IntelliSense, интеграцию с Git и управление несколькими файлами. Все они предлагают совершенно новые способы для дата-сайнтистов и разработчиков эффективно экспериментировать и работать с данными. Вы можете попробовать все это уже сегодня, загрузив последнюю версию расширения Python и создав/открыв Jupyter Notebook внутри VS Code.



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

WolframClientForPython | Новая клиентская библиотека Wolfram Language для Python

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

Оригинал перевода в моём блоге

Получение полного доступа к языку Wolfram Language из языка Python


Язык Wolfram (Wolfram Language) дает программистам в руки уникальный язык с огромным множеством сложных алгоритмов, а также встроенных знаний об окружающем мире. На протяжении многих лет люди спрашивают нас, как получить доступ ко всем возможностям нашей технологии из других программных сред и языков программирования. Шли годы и мы создали множество таких решений как Wolfram CloudConnector для Excel, WSTP (протокол символьной передачи Wolfram) для программ на C/C++ и, конечно, J/Link, который обеспечивает доступ к Wolfram Language непосредственно из Java.

Поэтому сегодня мы рады официально представить вам новое долгожданное решение по объединению языков, что позволит напрямую и эффективно вызывать Wolfram Language из языка Python: Клиентскую библиотеку Wolfram для Python. И что особенно важно, это клиентская библиотека имеет полностью открытый исходный код размещенный на git-хранилище WolframClientForPython под лицензией MIT, так что вы можете сколько угодно копировать ее и как угодно использовать ее по своему усмотрению.

Это легко и просто


Клиентская библиотека Wolfram позволяет легко интегрировать большую коллекцию алгоритмов языка Wolfram Language, а также базу знаний Wolfram непосредственно в любой уже существующий код Python, что значительно экономит ваше время и силы при разработке нового кода. В этой статье мы сначала покажем вам, как настроить соединение между Python и Wolfram Language, рассмотрим несколько методов и примеров, которые могут быть использованы для вычислений на языке Wolfram Language, а затем и вызова его для использования из Python. Для получения более полной справочной информации перейдите по ссылке: домашняя страница документации для клиентской библиотеки Wolfram для Python.
Читать дальше →

Python в Visual Studio Code – октябрьское обновление

Время на прочтение2 мин
Охват и читатели6.5K
Мы рады сообщить о доступности октябрьского обновления расширения Python для Visual Studio Code. Вы можете загрузить расширение Python из Marketplace или установить его прямо из галереи расширений в Visual Studio Code. Если у вас уже установлено расширение Python, вы также можете получить последнее обновление, перезапустив код Visual Studio. Подробнее о поддержке Python в Visual Studio Code вы можете узнать из документации.

В этом релизе мы рассмотрели 97 проблем, в том числе нативное редактирование Jupyter Notebooks, кнопку для запуска файла Python в терминале, а также улучшения «линтинга» (linting) и импорта с помощью Python Language Server. Полный список улучшений приведен в нашем журнале изменений.

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

PEG парсеры

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

Несколько лет назад меня кто-то спросил имеет ли смысл превести Python на PEG-парсер (или на грамматику PEG; я не помню точно кто и когда это было). Тогда я немного посмотрел на него, но так и не пришёл к какому-либо выводу, а потому и отбросил эту тему. Недавно я узнал больше о PEG (Parsing Expression Grammars, грамматике по парсингу выражений), и теперь я думаю, что это интересная альтернатива самописному генератору парсеров, который был разработан 30 лет назад, когда только начинал работать над Python. Я назвал его «pgen», и это был, наверно, первым фрагментом кода, который я написал для Python.



Причина, по которой я сейчас заинтересован в парсере PEG, заключается в том, что меня несколько раздражают ограничения pgen. Он построен на собственной реализации LL(1), которая имеет ряд допущений. Например, мне не нравились грамматические правила, которые могли бы генерировать пустые строки, поэтому я запретил их. И тем самым упростил алгоритм для создания таблиц синтаксического анализа. Я также изобрёл свою собственную EBNF-подобную грамматическую нотацию, которая мне до сих пор очень нравится.

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

Мой опыт подключения LPS331AP к Omega Onion2

Время на прочтение4 мин
Охват и читатели2.2K
Доброго времени суток, хабровчане!

Небольшое предисловие


Намедни я стал счастливым владельцем одного из самых маленьких одноплатников, работающим на LEDE, и первое, что захотелось сделать (после моргания светодиодом) — домашняя метеостанция, к которой можно получить доступ из любой точки. Первым делом было решено снимать данные о температуре, влажности и давлении. Для этого были выбраны купленные ранее датчики DHT11 И LPS3311AP (фото под катом).

Фото для интересующихся
image

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

Какой выбор остаётся?

  1. Собрать прослойку на микроконтроллёре ATmega328, прошить, залить готовый код и читать с неё. Очень увлекательно, но звучит как попытка собрать велосипед для дальнейшего использования в качестве костыля.
  2. Читать «вручную» с I2C, опираясь на официальный даташит. Попробовал, это возможно, но плодить bash-скрипты не хотелось и не казалось методологически верным.
  3. Написать библиотеку, чтобы работать с датчиком так, как хочется.

Если интересно, как шло и что из этого получилось, то добро пожаловать под кат.
Продолжение истории

Первое знакомство с Home Assistant

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

Home Assistant – популярное приложение с открытым исходным кодом для организации умного дома. Первый опыт автора в работе с Home Assistant основывается на попытке интеграции в него ‘умной рисоварки‘. Автор постарается описать основные компоненты и возможности данного приложения, с которыми ему привелось пошагово познакомиться. Статья является в чем-то обзором, в чем-то руководством для желающих начать свое знакомство с Home Assistant.
Читать дальше →