Как стать автором
Обновить
65
0
Vadim Frolov @fralik

Data Scientist

Отправить сообщение

Введение в ELF-файлы в Linux: понимание и анализ

Время на прочтение11 мин
Количество просмотров97K
Есть в мире вещи, которые мы принимаем как нечто само собой разумеющееся, хотя они являются истинными шедеврами. Одними из таких вещей являются утилиты Linux, такие, как ls и ps. Хотя они обычно воспринимаются как простые, это оказывается далеко не так, если мы заглянем внутрь. И таким же оказывается ELF, Executable and Linkable Format. Формат файлов, который используется повсеместно, но мало кто его понимает. Это краткое руководство поможет вам достичь понимания.



Прочтя это руководство, вы изучите:

  • Зачем нужен формат ELF и для каких типов файлов он используется
  • Структуру файла ELF и детали его формата
  • Как читать и анализировать бинарное содержимое файла ELF
  • Какие инструменты используются для анализа бинарных файлов
Читать дальше →
Всего голосов 34: ↑30 и ↓4+33
Комментарии15

Как я чуть не выкинул 150к на ветер или история установки приточной вентиляции в квартире

Время на прочтение19 мин
Количество просмотров653K

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


Читать дальше →
Всего голосов 285: ↑280 и ↓5+365
Комментарии595

Реализация строкового типа в CPython

Время на прочтение9 мин
Количество просмотров9.4K
Продолжу неспешный разбор реализации базовых типов в CPython, ранее были рассмотрены словари и целые числа. Тем, кто думает, что в их реализации не может быть ничего интересного и хитрого, рекомендуется приобщиться к данным статьям. Те, же, кто уже их прочёл, знают, что CPython хранит в себе множество интересностей и особенностей реализации. Их может быть полезно знать при написании своих скриптов, так и в качестве пособия по архитектурным и алгоритмическим решениям. Не являются исключением здесь и строки.


Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии16

10 практических рекомендаций по безопасности образов Docker. Часть 2

Время на прочтение6 мин
Количество просмотров7.4K
Перевод статьи подготовлен специально для студентов курса «Безопасность Linux».


Читать первую часть


5. Не оставляйте чувствительные данные в образах Docker


Иногда при создании приложения внутри образа Docker вам нужны такие секретные данные, как приватный SSH-ключ для извлечения кода из приватного репозитория или токены для установки закрытых пакетов. Если вы копируете их в промежуточный контейнер Docker, они кэшируются в том слое, к которому они были добавлены, даже если вы удалите их позже. Эти токены и ключи должны храниться вне Dockerfile.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+15
Комментарии4

Использование strict-модулей в крупномасштабных Python-проектах: опыт Instagram. Часть 1

Время на прочтение5 мин
Количество просмотров5.2K
Публикуем первую часть перевода очередного материала из серии, посвящённой тому, как в Instagram работают с Python. В первом материале этой серии речь шла об особенностях серверного кода Instagram, о том, что он представляет собой монолит, который часто меняется, и о том, как статические средства проверки типов помогают этим монолитом управлять. Второй материал посвящён типизации HTTP-API. Здесь речь пойдёт о подходах к решению некоторых проблем, с которыми столкнулись в Instagram, используя Python в своём проекте. Автор материала надеется на то, что опыт Instagram пригодится тем, кто может столкнуться с похожими проблемами.


Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии7

Современное автомобилестроение. Электромобили — срыв покровов

Время на прочтение9 мин
Количество просмотров38K


«Какой компонент электропривода в современных электромобилях имеет наивысшую плотность в виде количества ноу-хау на единицу объёма?»

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

И обе стороны окажутся неправы.
Разрыв шаблонов и фоточки голых моделей - под катом
Всего голосов 68: ↑56 и ↓12+44
Комментарии476

Венеция: дикий профит на паре голых скал

Время на прочтение13 мин
Количество просмотров40K
В посте про транспортную систему Венеции я обещал чуть больше рассказать про сам город и острова. Поэтому ниже — минутка пятничного урбанизма.



Примерно в 452 году зажиточные крестьяне убегали от варваров под предводительством Аттилы, бродящих толпами по материку. Лагуна мелкая, но для переправы нужны лодки, потому что проплыть 6 километров на коне как-то сложно. Ну и Аттила законно подозревал, что десантирование на острова — далеко не его основной бизнес.

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


Эту картинку NASA открыла для Вики, а я добавил выделение Венеции

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

Оставалась только одна проблема — вокруг был тотальный голяк. То есть можно было рыбачить, но зажиточные крестьяне всё же хотели большего. Ну и дальше пошла история Серениссимы, Светлейшей республики. Одной из самых странных стран в истории человечества: фактически, без территорий, но зато с обширными морскими владениями.
Читать дальше →
Всего голосов 110: ↑105 и ↓5+132
Комментарии57

Data Mesh: как работать с данными без монолита

Время на прочтение6 мин
Количество просмотров15K

Привет, Хабр! Мы в Dodo Pizza Engineering очень любим данные (а кто их сейчас не любит?). Сейчас будет история о том, как накопить все данные мира Dodo Pizza и дать любому сотруднику компании удобный доступ к этому массиву данных. Задача под звёздочкой: сохранить нервы команды Data Engineering.


Дисклеймер: на момент написания статьи мы думали так, но время расставило всё по своим местам. Сейчас всё иначе. Если хотите узнать, как именно, — приходите к нам на собеседование на позицию дата-инженера.

Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии23

Теория и практика стандартизации Docker-сервисов

Время на прочтение17 мин
Количество просмотров6.8K

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



Источник изображения:


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

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии4

this и ScopeChain в EcmaScript

Время на прочтение7 мин
Количество просмотров11K
Привет, Хабр!

В предыдущей статье мы рассматривали общую теории ООП в применении к EcmaScript и популярное заблуждение начинающих разработчиков относительно отличия ООП в JS и классических языках.

Сегодня мы поговорим о двух других не менее важных концепциях EcmaScript, а именно связи сущности с контекстом исполнения (this и есть эта самая связь) и связи сущности с порождающим контекстом(ScopeChain).

Итак, начнём!

this


На собеседованиях в ответ на вопрос: «Расскажите подробнее про this.». Начинающие разработчики, как правило, дают очень туманные ответы: "this – это объект «перед точкой», который использовался для вызова метода", "this — контекст, в котором был вызвана функция" и т.д.…

На самом деле, ситуация с этим центральным для EcmaScript языков понятием обстоит несколько сложнее. Разберёмся по порядку.

Допустим, у нас есть программа на языке JavaScript, в которой есть переменные объявленные глобально; глобальные функции; локальные функции(объявленные внутри других функций), функции, возвращаемые из функций.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии11

CQM — другой взгляд в глубоком обучении для оптимизации поиска на естественном языке

Время на прочтение3 мин
Количество просмотров2.7K

CQM — другой взгляд в глубоком обучении для оптимизации поиска на естественном языке


Краткое описание: Calibrated Quantum Mesh (CQM)— это следующий шаг от RNN / LSTM (Рекуррентные нейронные сети RNN (Recurrent Neural Networks) / Долгая краткосрочная память (Long short-term memory; LSTM) ). Появился новый алгоритм, называемый Calibrated Quantum Mesh (CQM), который обещает повысить точность поиска на естественном языке без использования размеченных данных обучения.

Читать дальше
Всего голосов 14: ↑11 и ↓3+8
Комментарии5

Визуализация больших графов для самых маленьких

Время на прочтение12 мин
Количество просмотров57K


Что делать, если вам нужно нарисовать граф, но попавшиеся под руку инструменты рисуют какой-то комок волос или вовсе пожирают всю оперативную память и вешают систему? За последние пару лет работы с большими графами (сотни миллионов вершин и рёбер) я испробовал много инструментов и подходов, и почти не находил достойных обзоров. Поэтому теперь пишу такой обзор сам.
Читать дальше →
Всего голосов 95: ↑94 и ↓1+93
Комментарии30

Тайная история интернета в политике конфиденциальности от Google, состоящей из 4000 слов

Время на прочтение11 мин
Количество просмотров13K


Конец 1990-х был простым периодом для Google. Нарождающаяся компания представляла собой всего лишь поисковую систему, а такие сервисы, как Gmail, Android и YouTube в лучшем случае были лишь блеском в глазах стартаперов. И первая политика конфиденциальности отражала эту простоту. Она была краткой и честной, милым, старым, добрым артефактом иных времён Кремниевой долины, когда Google всего в 600 словах объясняла, как она собирает и использует вашу личную информацию.

Того варианта интернета (и Google) уже нет с нами. За последние 20 лет та самая политика конфиденциальности переписана в раздувшийся документ из 4000 слов, описывающих то, как компания обращается с вашими данными.

Эта эволюция, шедшая два десятилетия и познавшая 30 вариантов, представляет собой историю трансформации интернета в глазах одной из наиболее важной его сущностей. Сегодня веб ужасно сложный, и политика конфиденциальности от Google соответствует этому.
Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии1

Нейронные сети предпочитают текстуры и как с этим бороться

Время на прочтение7 мин
Количество просмотров32K


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


В первой статье Approximating CNNs with bag-of-local features models works surprisingly well on ImageNet авторы берут модель, похожую на bag-of-words, и в качестве "слов" используют фрагменты из изображения. Эти фрагменты могут быть вплоть до 9х9 пикселей. И при этом, на такой модели, где полностью отсутствует какая-либо информация о пространственном расположении этих фрагментов, авторы получают точность от 70 до 86% (для примера, точность обычной ResNet-50 составляет ~93%).


Во второй статье ImageNet-trained CNNs are biased towards texture авторы приходят к выводу, что виной всему сам набор данных ImageNet и то, как изображения воспринимают люди и нейронные сети, и предлагают использовать новый датасет – Stylized-ImageNet.


Более подробно о том, что на картинках видят люди, а что нейронные сети

Читать дальше →
Всего голосов 100: ↑100 и ↓0+100
Комментарии68

Статистика на службе у бизнеса. Методология расчёта множественных экспериментов

Время на прочтение8 мин
Количество просмотров3.1K
Добрый день!

Как и было обещано в предыдущей статье, сегодня мы продолжим разговор о методологиях, применяемых в A/B-тестировании и рассмотрим методы оценки результатов множественных экспериментов. Мы увидим, что методологии довольно просты, и математическая статистика не так страшна, а первооснова всего — аналитическое мышление и здравый смысл. Однако предварительно хотелось бы сказать пару слов о том, какие же бизнес-задачи помогают решать строгие математические методы, нужны ли они Вам на данном этапе развития Вашей компании и какие pros and cons существуют в Большой аналитике.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии1

Управление зависимостями в Python: сравнение подходов

Время на прочтение12 мин
Количество просмотров27K
image

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

К сожалению, в Python-сообществе нет универсального понятия «хорошей архитектуры», есть только понятие «питоничности», поэтому архитектуру приходится придумывать самим. Под катом — лонгрид с размышлениями об архитектуре и в первую очередь — об управлении зависимостями применимо к Python.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии27

Ликбез по передаче параметров по значению в конструкторы и сеттеры (современный C++, примеры)

Время на прочтение4 мин
Количество просмотров20K
Судя по комментам habr.com/ru/post/460831/#comment_20416435 в соседнем посте и развернувшейся там дискуссии, на Хабре не помешает статья, как правильно передавать аргументы в конструктор или сеттер. На StackOverflow подобного материала полно, но тут что-то я не припомню.

Потому что пример в той статье полностью корректен, и автор статьи абсолютно прав. Вот этот пример:

// Хорошо.
struct person {
  person(std::string first_name, std::string last_name)
    : first_name{std::move(first_name)} // верно
    , last_name{std::move(last_name)} // std::move здесь СУЩЕСТВЕНЕН!
  {}
private:
  std::string first_name;
  std::string last_name;
};

Такой код позволяет покрыть все (ну ладно, почти все) возможные варианты использования класса:
Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии76

Microsoft ML Spark: расширение Spark, делающее SparkML человечнее, и LightGBM как бонус

Время на прочтение14 мин
Количество просмотров6.3K

Многие, кто работал с Spark ML, знают, что некоторые вещи там сделаны "не совсем удачно"
или не сделаны вообще. Позиция разработчиков Spark в том, что SparkML — это базовая платформа, а все расширения должны быть отдельными пакетами. Но это не всегда удобно, ведь Data Scientist и аналитики хотят работать с привычными инструментами (Jupter, Zeppelin), где есть большая часть того, что нужно. Они не хотят собирать при помощи maven-assembly JAR-файлы на 500 мегабайт или руками скачивать зависимости и добавлять в параметры запуска Spark. А более тонкая работа с системами сборки JVM-проектов может потребовать от привыкшых к Jupyter/Zeppelin аналитиков и DataScientist-ов много дополнительных усилий. Просить же DevOps-ов и администраторов кластера ставить кучу пакетов на вычислительные ноды — явно плохая идея. Тот, кто писал расширения для SparkML самостоятельно, знает, сколько там скрытых трудностей с важными классами и методами (которые почему-то private[ml]), ограничениями на типы сохраняемых параметров и т.д.


И кажется, что теперь, с библиотекой MMLSpark, жизнь станет немного проще, а порог вхождения в масштабируемое машинное обучение со SparkML и Scala чуть ниже.

Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии4

Обзор Python-пакета Datatable

Время на прочтение8 мин
Количество просмотров19K
«Пять экзабайт информации создано человечеством с момента зарождения цивилизации до 2003 года, но столько же сейчас создаётся каждые два дня». Эрик Шмидт


Datatable — это Python-библиотека для выполнения эффективной многопоточной обработки данных. Datatable поддерживает наборы данных, которые не помещаются в памяти.

Если вы пишете на R, то вы, вероятно, уже используете пакет data.table. Data.table — это расширение R-пакета data.frame. Кроме того, без этого пакета не обойтись тем, кто пользуется R для быстрой агрегации больших наборов данных (речь идёт, в частности, о 100 Гб данных в RAM).

Пакет data.table для R весьма гибок и производителен. Пользоваться им легко и удобно, программы, в которых он применяется, пишутся довольно быстро. Этот пакет широко известен в кругах R-программистов. Его загружают более 400 тысяч раз в месяц, он используется в почти 650 CRAN и Bioconductor-пакетах (источник).

Какая от всего этого польза для тех, кто занимается анализом данных на Python? Всё дело в том, что существует Python-пакет datatable, являющийся аналогом data.table из мира R. Пакет datatable чётко ориентирован на обработку больших наборов данных. Он отличается высокой производительностью — как при работе с данными, которые полностью помещаются в оперативной памяти, так и при работе с данными, размер которых превышает объём доступной RAM. Он поддерживает и многопоточную обработку данных. В целом, пакет datatable вполне можно назвать младшим братом data.table.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+39
Комментарии10

Рекомендации в Okko: как заработать сотни миллионов, перемножив пару матриц

Время на прочтение20 мин
Количество просмотров34K

Rekko — персональные рекомендации в онлайн-кинотеатре Okko


Знакома ли вам ситуация, когда на выбор фильма вы тратите гигантское количество времени, сопоставимое со временем самого просмотра? Для пользователей онлайн-кинотеатров это частая проблема, а для самих кинотеатров — упущенная прибыль.


К счастью, у нас есть Rekko — система персональных рекомендаций, которая уже год успешно помогает пользователям Okko выбирать фильмы и сериалы из более чем десяти тысяч единиц контента. В статье я расскажу вам как она устроена с алгоритмической и технической точек зрения, как мы подходим к её разработке и как оцениваем результаты. Ну и про сами результаты годового A/B теста тоже расскажу.

Рекомендую вам прочитать эту статью
Всего голосов 70: ↑61 и ↓9+52
Комментарии31

Информация

В рейтинге
5 984-й
Зарегистрирован
Активность