Обновить
529.23

Python *

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

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

Rust глазами Python-разработчика #2

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

Снова привет!

Мы – @cbmw и @AndreyErmilov, часть команды разработки «Рамблер/Медиа» (портал «Рамблер»). И это вторая часть наших размышлений по поводу сравнения Python и Rust (первая часть).
В этой части мы затронем многопоточность, асинхронность, функциональную парадигму и попробуем сделать некоторые заключения, которые мы для себя определили.

Читать далее

Декодируем сигнал метеоспутника NOAA в 50 строчек кода

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

Продолжим тему декодирования различных видов радиосигналов. Одним из интересных форматов, разработанных еще в прошлом веке, является APT (Automatic Picture Transmission). Он используется для передачи изображений Земли из космоса, и что для нас гораздо более интересно и актуально, прием сигналов APT прост и доступен радиолюбителям.


Спутник NOAA © en.wikipedia.org/wiki/NOAA-15

Для тех, кому интересно, продолжение под катом.
Читать дальше →

Первое место на AI Journey 2020 Digital Петр

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

Совсем недавно закончилось ежегодное международное соревнование AI Journey, организатором которого является Сбер. В этот раз нам была предоставлена возможность решать несколько задач: Digital Петр: распознавание рукописей Петра I, NoFloodWithAI: паводки на реке Амур и AI 4 Humanities: ruGPT-3. Наша команда приняла участие в решении задачи "Digital Петр: распознавание рукописей Петра I" и заняла первое место.

Читать далее

Продвижение бота на 214 тысяч процентов

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

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

По моему мнению реклама в сети скоро будет активно осваивать короткие звуковые споты. Всё чаще люди начинают слушать интернет, а не только его смотреть. Интернет-радио, Spotify, iTunes и множество других служб для "прослушки" сети очень быстро внедряются в массовое употреблением. Даже Твиттер вывел на рынок звуковые твитты. Росту значения звука способствует и рост числа индивидуальных устройств для прослушивания - наушники стали обыденным явлением и значит звуковая реклама может быть индивидуализирована и подана отдельному человеку в зависимости от его предпочтений как и традиционная контекстная реклама.  

Читать далее

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

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

Привет!

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

Ну что, погнали?

Читать далее

Опыт сопряжения Java, JavaScript, Ruby и Python в одном проекте посредством GraalVM

Время на прочтение18 мин
Охват и читатели8.7K
В прошлом месяце вышла стабильная LTS-версия многоязычной среды выполнения GraalVM 20.3.0 от корпорации Oracle и мне захотелось испробовать её для решения какой-нибудь интересной практической задачи. Для тех кто не в курсе, приведу краткое описание этой новой платформы. GraalVM позволяет использовать в едином окружении различные популярные языки программирования и обеспечивает их разностороннее взаимодействие в рамках некоторой общей среды выполнения.


Схематическое изображение архитектуры GraalVM из официальной документации.

Добавление новых языков в GraalVM осуществляется с помощью специального фреймворка Truffle, выполненного в виде библиотеки Java. Фреймворк предназначен для создания реализаций языков программирования в качестве интерпретаторов для самомодифицируемых абстрактных синтаксических деревьев (AST). При желании на его основе можно создать собственный язык, в официальных репозиториях GraalVM подробно рассмотрен пример реализации такого проекта под названием SimpleLanguage. Интерпретаторы, которые были написаны с использованием фреймворка Truffle, будут автоматически использовать GraalVM как JIT-компилятор непосредственно для самой реализации языка запускаемой на JVM-платформе и, соответственно, иметь возможность взаимодействия и двустороннего обмена данными в одном и том же пространстве памяти посредством специально разработанного протокола и программного интерфейса Polyglot API.

Платформа GraalVM вместе с исполняемой программой на смеси самых разных языков может быть представлена в виде автономного и самодостаточного исполняемого файла, либо работать поверх OpenJDK, Node.js или даже внутри Oracle Database.
Читать дальше →

Я единственный из 1400, или самый крутой рекрутинг, что я проходил

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

Я уже лет 10 пишу код на питоне, и последние 2.5 года стабильно работал на американскую компанию. Наверно, многим знакома история, когда ты кодишь-кодишь, вроде всё неплохо, и внезапно ты - самый знающий и опытный в команде и добро пожаловать в тим лиды. Астрологи объявили неделю менеджмента, количество кода снизилось на 100%.

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

Да что же там?

Решаем мини-игру про взлом протокола в Cyberpunk 2077 за 50 строк на Python

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

Если вы хотя бы отдалённо интересуетесь играми и не прожили последнюю пару лет в тайге, то, вероятно, слышали что-нибудь о Cyberpunk 2077. После долгого ожидания она наконец вышла! И в ней есть мини-игра про взлом! И чем больше получишь в ней очков, тем ценнее приз! Может ли магия Python дать нам преимущество в этом жестоком Нете? Разумеется.

Краткое описание мини-игры: игроку даётся квадратная матрица и одна или несколько последовательностей шестнадцатеричных чисел, а также буфер определённой длины. Цель игрока — завершить наибольшее количество последовательностей, выбирая столько узлов, сколько позволяет буфер. Каждая последовательность заполняется значением, если выбранный узел является следующим узлом последовательности. В начале игры можно выбрать любое из значений в первой строке матрицы. После этого в каждом ходе можно попеременно выбирать N-ный столбец/строку, где N — индекс последнего выбранного значения. Если это ужасное описание вам не помогло, то более подробное можно прочитать здесь.
Читать дальше →

Хватит злоупотреблять *args и **kwargs в Python

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

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

Но почему?

Как джуниор Python-разработчику стать мидлом за год

Время на прочтение12 мин
Охват и читатели34K
Привет! Я Рома, менеджер продукта в Яндекс.Практикуме, где развиваю курс «Мидл Python-разработчик». Мы делаем из начинающих разработчиков крепких мидлов с инженерным мышлением. Сегодня хочу поделиться небольшими заметками о том, над чем стоит работать, если вы джуниор, который хочет стать мидлом.

Я не разработчик, поэтому эта статья во многом отражает взгляд со стороны. Ответить на вопрос «Как джуниор Python-разработчику стать мидлом за год?» — не такая простая задача, как может показаться на первый взгляд. Здесь спряталось сразу несколько челленджей:

  1. Ответить на вопрос, кто такой джуниор: определить отправную точку, базу навыков, с которой мы будем рассматривать рост.
  2. Ответить на вопрос, кто такой мидл — финальная точка нашего путешествия. Конечно же, во всех компаниях мидлы разные, а нам нужно какое-то взвешенное среднее, не оторванное от реальности.
  3. Ответить на вопрос, почему рассматриваем рост именно за год. Не ради красивой круглой цифры же, верно?

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

Ещё раз о производительности фреймворков Python для веб разработки

Время на прочтение2 мин
Охват и читатели13K
Недавно мне пришлось начинать проект нового веб сервиса, и я решил протестировать максимальную нагрузочную способность Django, а заодно сравнить её с Flask’ом и AIOHTTP. Результат показался мне неожиданным, поэтому я «просто оставлю» его тут.
Читать дальше →

Не баян: ищем дубликаты изображений на основе Milvus с индексом FAISS внутри

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


В user-generated проектах часто приходится бороться с дубликатами, а для нас это особенно актуально, так как основной контент мобильного приложения, которое я разрабатываю, — это изображения, которые постятся десятками тысяч ежедневно. Для поиска повторов мы написали отдельную систему, чтобы облегчить процесс и сэкономить море времени.

Под катом рассмотрим используемые инструменты, а потом перейдём к примеру реализации.
Читать дальше →

Обучение на табличных данных. TABNet. Часть 2. Реализация

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

Продолжение перевода про архитектуру TABNet. Первая часть здесь

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

Читать далее

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

Конструктор Lego и объектно-ориентированное программирование в Tcl. Разбор сертификата x509.v3

Время на прочтение31 мин
Охват и читатели3.3K
imageЧасто приходится слышать, что скриптовому языку Tcl не хватает поддержки объектно-ориентированного стиля программирования. Сам я до последнего времени мало прибегал к объектно-ориентированному программированию (ООП), тем более в среде Tcl. Но за Tcl стало обидно. Я решил разобраться. И оказалось, что практически с момента появления Tcl, появилась и возможность объектно-ориентированного программирования в его среде. Всё «неудобство» заключалось в необходимости подключить пакет с поддержкой ООП. А таких пакетом было и есть несколько, как говорится на любой вкус. Это и Incr Tcl, Snit и XoTcl.

Программисты, привыкшие к языку C++, чувствуют себя как дома, программируя в среде Incr Tcl. Это было одним из первых широко используемых расширений для OOП на основе Tcl.

Пакет Snit в основном используется при построении Tk-виджетов, а XoTcl и его преемник nx предназначались для исследования динамического объектно-ориентированного программирования.

Обобщение опыта, полученного при использовании этих систем, позволило внедрить ООП в ядро Tcl начиная с версии 8.6. Так появился TclOO — Tcl Object Oriented.

Сразу отметим, что Tcl не просто поддерживает объектно-ориентированное программирование, а в полном смысле динамическое объектно-ориентированное программирование.
Читать дальше →

HDB++ TANGO Archiving System

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

Что такое HDB++?


Это система архивирования TANGO, позволяет сохранять данные полученные с устройств в системе TANGO.


Здесь будет описана работа с Linux (TangoBox 9.3 на основе Ubuntu 18.04), это уже готовая система где все настроено.


О чем статья?


  • Архитектура системы.
  • Как настроить архивирование.

У меня ушло ~ 2 недели чтобы разобраться в архитектуре и написать свои скрипты для python под это дело.


Для чего это нужно?


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


  • Вам не нужно думать о том как хранить данные в БД.
  • Нужно только указать какие атрибуты с какого оборудования архивировать.
Читать дальше →

Sibur Challenge 2020 или «как мы фичи придумывали»

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

Всем привет! В этом году компания Sibur Digital вновь проводила крупный (по сравнению с другими российскими) чемпионат по анализу данных. Мы с другом в нём участвовали и хотели бы поделиться с читателями Хабра своим решением и опытом, полученным от участия. Конечно вряд ли мы Америку откроем этой статьей, но какой-нибудь новичок в соревнованиях по АД точно сможет почерпнуть для себя что-то полезное.

Читать далее

Как прогнозировать результаты спортивных матчей с помощью проекта ML на Python Pandas, Keras, Flask, Docker и Heroku

Время на прочтение7 мин
Охват и читатели12K
Во время Чемпионата мира по регби в 2019 году я сделал небольшой научный проект Data Science, чтобы попытаться спрогнозировать результаты матчей, написав о нем здесь. Я развил проект до примера от начала до конца, чтобы продемонстрировать, как развернуть модель машинного обучения в виде интерактивного веб-приложения.

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

Обучение на табличных данных. TABNet. Часть 1

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

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

Читать далее

Rust глазами Python-разработчика

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


Привет! Мы – часть команды разработки «Рамблер/Медиа» (портал «Рамблер»). На протяжении трех лет мы поддерживаем и развиваем несколько больших python-приложений. Чуть больше года назад перед нами встала задача написать еще одно большое приложение – API к основному хранилищу новостей, и мы сделали это на Rust.


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


Мы не ответим на вопрос, почему выбор пал именно на Rust, а не Go, например, или на какой-либо другой язык. Также мы не будем сравнивать производительность Python- и Rust-приложений – эти темы достойны отдельного обсуждения.

HackTheBox. Прохождение Laser. Jetdirect, RPC и кража SSH

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

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

В данной статье мы работаем с принтером и получаем документ, который даст нам вектор захвата хоста, найдем в памяти ключ шифрования и расшифруем найденный документ. Далее работаем с gRPC и даже получаем RCE. Как вектор LPE, пробуем найти уязвимость в скиптах, использующих SSH.

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

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