Обновить
1024K+

Python *

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

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

Стеганография в файловой системе оптических дисков

Время на прочтение7 мин
Охват и читатели8.2K
Будучи в поисках интересной информации о стеганографии, я наткнулся на занимательную статью о стеганографии в файловой системе, и, спустя какое -то время, та навела меня на мысль о создании стеганографии в файловой системе оптических дисков.

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

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

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

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

Формальная верификация на примере задачи о волке, козе и капусте

Время на прочтение6 мин
Охват и читатели15K
На мой взгляд, в русскоязычном секторе интернета тематика формальной верификации освещена недостаточно, и особенно не хватает простых и наглядных примеров.

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

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

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

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

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

Однако в любом случае будет получен один из трёх ответов: программа корректна, некорректна, или же — вычислить ответ не удалось.

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

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

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

Причём Z3 именно решает уравнения, а не подбирает их значения грубым брутфорсом.
Это означает, что он способен находить ответ, даже в случаях когда комбинаций входных вариантов и 10^100.

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

Задача о 8 ферзях (Взята из англоязычного мануала).


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

Python Testing с pytest. Начало работы с pytest, Глава 1

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

Вернуться Дальше


Я обнаружил, что Python Testing с pytest является чрезвычайно полезным вводным руководством к среде тестирования pytest. Это уже приносит мне дивиденды в моей компании.

Chris Shaver
VP of Product, Uprising Technology


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

SciPy, оптимизация с условиями

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


SciPy (произносится как сай пай) — это библиотека для научных вычислений, основанная на numpy и скомпилированных библиотеках, написанных на C и Fortran. С SciPy интерактивный сеанс Python превращается в такую же полноценную среду обработки данных, как MATLAB, IDL, Octave, R или SciLab.


В этой статье рассмотрим основные приемы математического программирования — решения задач условной оптимизации для скалярной функции нескольких переменных с помощью пакета scipy.optimize. Алгоритмы безусловной оптимизации уже рассмотрены в прошлой статье. Более подробную и актуальную справку по функциям scipy всегда можно получить с помощью команды help(), Shift+Tab или в официальной документации.

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

Небольшой бэкдор на Flask или как управлять компьютером в локальной сети

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

Недавно я посмотрел скачанную версию стрима по программированию «Как создать свое веб-приложение на Flask». И решил закрепить свои знания в каком-нибудь проекте. Долго не знал, что написать и мне пришла идея: «А почему бы не сделать мини-бэкдор на Flask?».

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

  1. Уметь открывать сайты
  2. Иметь доступ к командной строке
  3. Уметь открывать программы, фото, видео

Итак, первый пункт крайне легко реализовать при помощи модуля webbrowser. Второй пункт я решил реализовать при помощи модуля os. И третий – тоже через модуль os, но я буду использовать «ссылки»(об этом позже).
Читать дальше →

Определяем породу собаки: полный цикл разработки, от нейросети на Питоне до приложения на Google Play

Время на прочтение27 мин
Охват и читатели26K
Прогресс в области нейросетей вообще и распознавания образов в частности, привел к тому, что может показаться, будто создание нейросетевого приложения для работы с изображениями — это рутинная задача. В некотором смысле, так и есть — если вам пришла в голову идея, связанныя с распознаватием образов, не сомневайтесь, что кто-то уже что-то подобное написал. Все, что от вас требуется, это найти в Гугле соответствующий кусок кода и «скомпилировать» его у автора.

Однако, все еще есть многочисленные детали, делающие задачу не столько неразрешимой, сколько… нудной, я бы сказал. Отнимающей слишком много времени, особенно если вы — новичок, которому нужно руководство, step-by-step, проект, выполненный прямо на ваших глазах, и выполненный от начала и до конца. Без обычных в таких случаях «пропустим эту очевидную часть» отговорок.

В этой статье мы рассмотрим задачу создания определителя пород собак (Dog Breed Identifier): создадим и обучим нейросеть, а затем портируем ее на Java для Android и опубликуем на Google Play.

Если вы хотите посмотреть на готовый результат, вот он: NeuroDog App на Google Play.

Веб сайт с моей робототехникой (в процессе): robotics.snowcron.com.
Веб сайт с самой программой, включая руководство: NeuroDog User Guide.

А вот скриншот программы:

image

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

Информационная энтропия хаоса

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


Введение


На Habr достаточно много публикаций, в которых рассматривается понятие энтропии, вот только некоторые из них [1÷5]. Публикации были позитивно восприняты читателями и вызвали большой интерес. Достаточно привести определение энтропии, которое дал автор публикации [1]: «энтропия — это то, как много информации вам не известно о системе». Публикаций о явлении хаосе на Habr тоже достаточно [6÷9]. Однако связь энтропии и хаоса в обеих группах публикаций не рассматривалась.

Это объясняется тем, что различные области знаний выделяют разные виды меры хаоса:

  • информационная;
  • термодинамическая;
  • дифференциальная;
  • культурная.

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

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

Что из этого получилось Вы узнаете заглянув под кат.
Читать дальше →

Отображение и оптимизация вывода на терминал в вебе

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

Не так давно я столкнулся с довольно простой и одновременно интересной задачей: реализация read-only терминала в веб приложении. Интереса задаче придавали три важных аспекта:


  • поддержка основных ANSI Escape sequences
  • поддержка минимум 50 000 строк данных
  • отображение данных по мере их поступления.


В данной статье я расскажу о том, как это реализовывал и как потом всё это оптимизировал.

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

Основы Natural Language Processing для текста

Время на прочтение12 мин
Охват и читатели248K
Обработка естественного языка сейчас не используются разве что в совсем консервативных отраслях. В большинстве технологических решений распознавание и обработка «человеческих» языков давно внедрена: именно поэтому обычный IVR с жестко заданными опциями ответов постепенно уходит в прошлое, чатботы начинают все адекватнее общаться без участия живого оператора, фильтры в почте работают на ура и т.д. Как же происходит распознавание записанной речи, то есть текста? А вернее будет спросить, что лежит в основе соврменных техник распознавания и обработки? На это хорошо отвечает наш сегодняшний адаптированный перевод – под катом вас ждет лонгрид, который закроет пробелы по основам NLP. Приятного чтения!


Не ORMом единым

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

Не ORMом единым


Всем привет! Я руковожу отделом партнерской разработки (Partners Development) в сервисе бронирования отелей Ostrovok.ru. В этой статье я хотел бы рассказать про то, как на одном проекте мы использовали Django ORM.


На самом деле я слукавил, название должно было быть "Не ORMом единым". Если вам интересно, почему я так написал, а также если:


  • У вас в стеке Django, и вам хочется выжать из ORM максимум возможностей, а не просто Model.objects.all(),
  • Вы хотите перенести часть бизнес-логики на уровень баз данных,
  • Или вы хотите узнать, почему самая частая отмазка разработчиков в B2B.Ostrovok.ru "так исторически сложилось",

… добро пожаловать под кат.


кдпв

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

Подсчитываем энергобюджет радиолинии для спутника формата CubeSat

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

Предисловие


Думаю, нужно коротко пояснить, почему вдруг такая, казалось бы, тривиальная тема с подсчетом энергобюджета и почему именно спутники CubeSat? Ну, здесь всё достаточно просто: моя короткая педагогическая практика показала (мне), что тема эта хоть и базисная, но далеко не всеми с первого раза понимаемая, а более того имеющая несколько неочевидных в первом прочтении вопросов. Тем более, что, казалось бы, по таким базовым вещам до сих пор публикуют статьи в IEEE и делают это далеко не студенты. Почему именно CubeSat? Здесь всё ещё проще: формат спутника интересный (сам факт существования микро- и наноспутников, как выяснилось, повергает многих в состояние короткого шока), а потому как нельзя кстати подходящий для учебных целей.


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

Raspberry-pi-танк и GPS навигация

Время на прочтение4 мин
Охват и читатели19K
После экспериментов с искуственным интеллектом автопилот моего танка решил сделать шаг назад и научиться ориентироваться по старым добрым спутникам.
Читать дальше →

Расширение mypy с помощью плагинов

Время на прочтение5 мин
Охват и читатели14K
Добрый день, друзья. А мы продолжаем наращивать интенсивность запуска новых курсов и уже сейчас рады сообщить о том, что в конце апреля стартуют занятия по курсу «Web-разработчик на Python». В связи с этим традиционно делимся переводом полезного материала. Начнём.

Известно, что Python – язык с динамической типизацией. Очень просто писать DSL-подобные фреймворки, которые трудно разобрать инструментами статичной проверки типа. Несмотря на это, с помощью последних функциональных новшеств mypy, таких как protocols и literal types, а также с базовой поддержкой метаклассов и поддержкой дескриптора, мы можем чаще получать точные типы, однако по прежнему трудно избежать ложных срабатываний и других негативных факторов. Чтобы решить эту проблему и избежать необходимости кастомизировать систему типов для каждого фреймворка, mypy поддерживает систему плагинов. Плагины — это модули в Python, которые обеспечивают обратные вызовы (plugin hooks), которые mypy вызовет при проверке типов классов и функций, взаимодействующих с библиотекой или фреймворком. Таким образом можно точнее выделить тип возвращаемой функции, который в противном случае выразить крайне трудно, либо автоматически сгенерировать некоторые методы класса, чтобы отразить эффекты декоратора. Чтобы узнать больше об архитектуре системы плагинов и увидеть полный список возможностей, ознакомьтесь с документацией.

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

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

Прорабатываем навык использования группировки и визуализации данных в Python

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

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

Сегодня будем прорабатывать навык использования средств группирования и визуализации данных в Python. В предоставленном датасете на Github проанализируем несколько характеристик и построим набор визуализаций.

По традиции, в начале, определим цели:

  • Сгруппировать данные по полу и году и визуализировать общую динамику рождаемости обоих полов;
  • Найти самые популярные имена за всю историю;
  • Разбить весь временной промежуток в данных на 10 частей и для каждой найти самое популярное имя каждого пола. Для каждого найденного имени визуализировать его динамику за все время;
  • Для каждого года рассчитать сколько имен покрывает 50% людей и визуализировать (мы увидим разнообразие имен за каждый год);
  • Выбрать 4 года из всего промежутка и отобразить для каждого года распределение по первой букве в имени и по последней букве в имени;
  • Составить список из нескольких известных людей (президенты, певцы, актеры, киногерои) и оценить их влияние на динамику имен. Построить наглядную визуализацию.

Меньше слов, больше кода!

И, поехали.
Читать дальше →

Подборка @pythonetc, март 2019

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

Это десятая подборка советов про Python и программирование из моего авторского канала @pythonetc.

Предыдущие подборки.

0_0


0_0 — полностью корректное выражение на Python.
Читать дальше →

Unittest и абстрактные тесты

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

Вместо вступления


Unittest — наверное самый известный фреймворк для написания тестов в Python. Он очень прост в освоении и его легко начать использовать в вашем проекте. Но ничто не бывает идеальным. В этом посте я хочу рассказать об одной возможности, которой лично мне (думаю, не одному) не хватает в unittest.
Читать дальше →

Для чего и как мы скрываем госномера автомобилей в объявлениях Авито

Время на прочтение7 мин
Охват и читатели95K
Привет. В конце прошлого года мы стали автоматически скрывать номера автомобилей на фотографиях в карточках объявлений на Авито. О том, зачем мы это сделали, и какие есть способы решения таких задач, читайте в статье.

Hide my plate!
Hide my plate!

Python для Веба: что нужно знать джуниору, чтобы работать и развиваться

Время на прочтение7 мин
Охват и читатели163K
Мы сделали сокращенную расшифровку с главными мыслями из Python Junior Podcast: в нем мы обсудили, с чего начинать и куда податься начинающему разработчику на Python. В последнее время у нас много контента для миддлов и сеньоров, но этот выпуск — точно для джунов.


Аудио- и видеоверсия в конце

Моделируем алгоритм MUSIC для задач определения направления прихода электромагнитной волны

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

aaspcats


Предисловие


Начну своё вступление издалека. Давным-давно, в далеких 2016-2017 годах вашему покорному слуге удалось съездить на полугодовое обучение в далекий город Ильменау (Германия), где он успешно (в общем и целом) закончил магистерскую программу Communications and Signal processing. Программа оказалась не из простых, однако сейчас о ней вспоминать даже приятно. Иногда...

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

Экзотические структуры данных: Modified Merkle Patricia Trie

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

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


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


Загадочное Modified Merkle Patricia Trie.


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


КДПВ

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