Обновить
1024K+

Python *

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

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

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

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

aaspcats


Предисловие


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

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

Сетевые настройки из FreeRadius через DHCP

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

Прилетела задача наладить выдачу IP адресов абонентам. Условия задачи:

  • Отдельного сервера под авторизации не дадим — обойдетесь ;)
  • Абоненты должны получать сетевые настройки по DHCP
  • Сеть разнородная. Это и PON оборудование, и обычные свичи с настроенной Опцией 82 и WiFi базы с точками
  • Если ни под одно из условий выдачи IP данные не попадают — необходимо выдать IP из «гостевой» сети

Из хорошего: есть таки сервер на FreeBSD, который может «поработать», но он «за тридевять земель» ;),  не «прям в этой сети».
Читать дальше →

Практическое использование D-Wave 2000Q: крутая кривая обучения квантовым вычислениям

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

Переосмыслить концепцию задачи тяжело, но результат стоит того




Примечание автора: я знаю, что неправильно вычислил перенос Брэгга как в классическом, так и в квантовом случае; однако, это достаточно близко к правде для того, чтобы понять разницу между программированием классического и квантового компьютера.

Время: где-то в 2018 году. Место: тухлый канал в Слаке.

«Ты знаешь Python?»

Вопросы Джона Тиммера, научного директора Ars Technica, иногда могут застать врасплох. Если бы в Слаке можно было пропитывать буквы осторожностью, то мой ответ «Да» просто сочился бы ею.

Оказывается, что D-Wave решила дать всему миру доступ к своему квантовому оптимизатору через API. Ars пригласили его опробовать, но нужно было знать Python. Я был готов на это.
Читать дальше →

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

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

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


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


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


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


КДПВ

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

Анализ статистики по рекламным кампаниям — создаем в DataFrame новую метрику (python)

Время на прочтение1 мин
Охват и читатели5.8K
Для маленьких клиентов (а также для клиентов, у которых сложная для анализа многоканальность) я слежу за чистым CPC (клики, CTR, цена клика, отказы).

Задача: понять какая рк работает эффективней и, исходя из этого, отредактировать ставки.

Для этого я в аналитике использую стоимость полезного клика (CUC — Cost per Useful Click). Данный показатель учитывает стоимость клика, и показатель отказов.

Формула: Cost/Clicks*((100-BounseRate)/100)
Объясню простым языком:
Мы получили 200 кликов за 2000₽, процент отказов 20%. Значит действительно полезных кликов мы купили 80шт,
2000₽/80 = 25₽

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

Moscow Python Conf ++ через три дня: о чем расскажет Bobuk и кто в это время выступит в параллельных залах?

Время на прочтение6 мин
Охват и читатели3.4K
Эксперимент по подготовке докладов на Moscow Python Conf ++ с нуля на финишной прямой. Слайды готовы, прогоны провели, осталось только дождаться премьеры — уже в эту пятницу 5 апреля. В расписании 24 доклада про использование Python в продакшене крупных компаний. Под катом — взгляд на организацию глазами программного комитета и смешные проблемы вроде «кого ставить в параллель хедлайнеру, чтобы не было пустых залов и обиженных спикеров».
Читать дальше →

Парадокс Питона (The Python Paradox)

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

В последнем выпуске подкаста "Цинковый прод" помимо всего прочего обсуждался так называемый парадокс Питона (The Python Paradox).


Как ни странно, на Хабре нет практически ни одного упоминания об этом парадоксе. При том, что, несмотря на свою простоту, мысль очень интересная


В далеком-предалеком 2004 году, когда язык Python был чем-то необычным, немейнстримовым, вышла статья Пола Грэма, в которой он поделился своим эмпирическим наблюдением: программисты на Питоне, которых он знает, гораздо сообразительнее, чем Java-программисты.

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

PyTest Нео

Время на прочтение1 мин
Охват и читатели4.6K
Одним вечером, созерцая бесконечные тесты и глядя на бегущие точки, проскочила мысль — как это похоже на Матрицу! Так и родилась идея, сделать визуализацию тестов в виде Матрицы.



Под катом анимация и немного подробностей.
Читать дальше →

Как сделать триггер DAG'а в Airflow, используя Experimental API

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

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


Так было, например, в 2015 году и мы на программе “Специалист по большим данным” пользовались Hadoop-кластером со Spark на 35 одновременных пользователей. Как его готовить под такой юзкейс с использованием YARN, было непонятно. В итоге, разобравшись и пройдя путь самостоятельно, сделали пост на Хабре и еще выступили на Moscow Spark Meetup.


Предыстория


В этот раз речь пойдет о другой программе – Data Engineer. На ней наши участники строят два типа архитектуры: lambda и kappa. И в lamdba-архитектуре в рамках батч-обработки используется Airflow для перекладывания логов из HDFS в ClickHouse.


Все в общем-то хорошо. Пусть строят свои пайплайны. Однако, есть "но": все наши программы технологичны с точки зрения самого процесса обучения. Для проверки лаб мы используем автоматические чекеры: участнику нужно зайти в личный кабинет, нажать кнопку “Проверить”, и через какое-то время он видит какую-то расширенную обратную связь на то, что сделал. И именно в этот момент мы начинаем подходить к нашей проблеме.

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

Termux шаг за шагом (Часть 2)

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


В прошлой части мы с вами познакомились с базовыми командами Termux'а, настроили SSH соединение с ПК, научились создавать alias'ы и установили несколько полезных утилит. В этот раз нам предстоит шагнуть еще дальше, мы с вами:


  • узнаем про Termux:API
  • установим Python и nano, а также напишем "Hello, world!" на Python
  • узнаем про bash-скрипты, и напишем скрипт с использованием Termux:API
  • используя bash-скрипт, Termux:API и Python напишем простую программку
Читать дальше →

Монады за 15 минут

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

Вступление


На конференции YOW! 2013 один из разработчиков языка Haskell, проф. Филип Вадлер, показал, как монады позволяют чистым функциональным языкам осуществлять императивные по сути операции, такие, как ввод-вывод и обработку исключений. Неудивительно, что интерес аудитории к этой теме породил взрывной рост публикаций о монадах в Интернет. К сожалению, бо́льшая часть этих публикаций использует примеры, написанные на функциональных языках, подразумевая, что о монадах хотят узнать новички в функциональном программировании. Но монады не специфичны для Haskell или функциональных языков, и вполне могут быть проиллюстрированы примерами на императивных языках программирования. Это и является целью данного руководства.

Чем это руководство отличается от остальных? Мы попытаемся не более чем за 15 минут «открыть» монады, используя лишь интуицию и несколько элементарных примеров кода на Python. Мы поэтому не станем теоретизировать и углубляться в философию, рассуждая о буррито, космических скафандрах, письменных столах и эндофункторах.
Читать дальше →

Получение рекламных кампаний Яндекс Директ с помощью API в DataFrame (Python)

Время на прочтение7 мин
Охват и читатели22K
Работая сразу с несколькими клиентами, появляется необходимость оперативно анализировать много информации в разных аккаунтах и отчетах. Когда клиентов становится больше 10, маркетолог больше не успевает постоянно следить за статистикой. Но выход есть.

В данной статье я расскажу про то, как следить за рекламными аккаунтами с помощью API и Python.

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

Для этого нам нужно:

  1. Получить токен API Яндекс Директ
  2. Написать запрос к серверу
  3. Импортировать данные в DataFrame
Читать дальше →

Обман нейронной сети для начинающих

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

image


В рамках ежегодного контеста ZeroNights HackQuest 2018 участникам предлагалось попробовать силы в целом ряде нетривиальных заданий и конкурсов. Часть одного из них была связана с генерированием adversarial-примера для нейронной сети. В наших статьях мы уже уделяли внимание методам атаки и защиты алгоритмов машинного обучения. В рамках же этой публикации мы разберем пример того, как можно было решить задание с ZeroNights Hackquest при помощи библиотеки foolbox.

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

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

От парсера афиши театра на Python до Telegram-бота. Часть 2

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


Продолжаем историю о разработке Telegram-бота для поиска билетов — HappyTicketsBot, начало можно почитать в первой части.

Во второй расскажу о самом боте, поделюсь кодом, а также идеями, которым скорее всего не суждено стать реальностью. Большая часть функционала к моменту создания бота уже была написана в формате скрипта, поэтому основной задачей стояло наладить интерфейс взаимодействия с пользователем через Telegram-messenger. Получилось не так болтологически, как в 1й части, так что attention — много кода.

Спойлер: HappyTicketsBot так и не улетел крутиться на иностранный сервер, он локальный и русский, но однажды запуск (верю) состоится =)

UPDATE: После расшаривания бота среди театральной публики о нем написали в СМИ. Резко нахлынул поток пользователей. Через пару дней игры «подними сразу, как упало» бот и на сервер улетел, и пережил ряд улучшений. Я довольна=)
Читать дальше →

DCF77: как работает система передачи сигналов точного времени?

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

Наверное многие, приобретающие часы или метеостанцию, видели на упаковке логотип Radio Controlled Clock или даже Atomic Clock. Это весьма удобно, ведь достаточно поставить часы на стол, и они через некоторое время автоматически настроятся на точное время.



Разберемся как это работает и напишем декодер на языке Python.
Читать дальше →

Снижение объёма выборки экспериментальных данных без потери информации

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


В чем проблема гистограмм экспериментальных данных


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

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

Для этого выборка представляется в виде гистограммы, состоящей из $k$ столбцов, построенных на интервалах протяженностью $d$.

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

Кроме того, идентификация распределения нужна ещё и потому, что рассеяние всех оценок (среднеквадратичного отклонения, эксцесса, контрэксцесса и др.) также зависит от формы закона распределения.

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

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

Какие языки программирования наименее безопасны?

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


Обзор от WhiteSource показал, какие из языков программирования имеют наибольшие дыры в безопасности. Победитель антирейтинга — Си. Но это только начало истории.

Технологии в целом нашпигованы ошибками безопасности. На низком уровне это ошибки в железе. Так это было с уязвимостью Intel и ошибками Spectre. Чуть выше — дыры в безопасности языков программирования. И их ну очень много!
Читать дальше →

Кросспостинг постов из Instagram в паблик VK на Python

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


Предисловие


Решил выйти на новый рынок сбыта, тем более, целевая аудитория моего интернет-магазина, не имеющая аккаунтов в Instagram, давно интересовалась появлением дубликата в VK. Идея хорошая, но постов на странице сотни, соответственно вручную работать ctrl+c ctrl+v не хотелось, плюс дальнейшие перспективы обезьянней работы не впечатляли.

Уверенный, что в интернете полно бесплатный решений, я начал гуглить. Естественно, первые страницы поисковой выдачи пестрят платными сервисами, с довольно обширными функционалами. Но мне, всего лишь на всего, надо было перенести все посты со страницы Instagram в паблик VK и в дальнейшем синхронно пополнять его.

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

Документация по api Instagram и VK довольно подробная и задачка не кажется сложной. Освободив себе пару вечеров, я приступил к работе. Первым делом необходимо было получить токены как в Instagram, так и в VK. С этим проблем не было, оба были получены за пару минут.

Дальше меня ждал первый подводный камень…
Читать дальше →

Исключения в Python теперь считаются анти-паттерном

Время на прочтение9 мин
Охват и читатели60K
Что такое исключения? Из названия понятно — они возникают, когда в программе происходит исключительная ситуация. Вы спросите, почему исключения — анти-паттерн, и как они вообще относятся к типизации? Я попробовал разобраться, и теперь хочу обсудить это с вами, хабражители.

Проблемы исключений


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

Исключения трудно заметить


Существует два типа исключений: «явные» создаются при помощи вызова raise прямо в коде, который вы читаете; «скрытые» запрятаны в используемых функциях, классах, методах.

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

def divide(first: float, second: float) -> float:
    return first / second

Функция просто делит одно число на другое, возвращая float. Типы проверены и можно запустить что-то такое:  

result = divide(1, 0)
print('x / y = ', result)

Заметили? На самом деле до print исполнение программы никогда не дойдет, потому что деление 1 на 0 – невозможная операция, она вызовет ZeroDivisionError. Да, такой код безопасен с точки зрения типов, но его все равно нельзя использовать.
Читать дальше →

DHCP+Mysql сервер на Python

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


Целью данного проекта было:

  • Изучение протокола DHCP при работе в сети IPv4
  • Изучение Python (немножко более чем с нуля ;) )
  • замена серверу DB2DHCP (мой форк), оригинал здесь, который собирать под новую ОС всё труднее и труднее. Да и не нравится, что бинарник, который нет возможности «поменять прям щас»
  • получение работоспособного сервера DHCP с возможностью выборки IP адреса абонента по mac абонента или связке mac свича+порт (Option 82)
  • написание очередного велосипеда (О! это моё любимое занятие)
  • получение люлей про свою косорукость на Хабрахабр (а лучше инвайта) ;)

Результат:  работает ;) Опробовано на ОС FreeBSD и Ubuntu. Теоретически код можно попросить работать под любой ОС, т.к. специфических привязок в коде как будто нет.
Осторожно! Дальше много.
Читать дальше →