Подводные камни идентификации Android-устройства

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

Гугл говорит, что идентифицировать устройство очень просто. Но мы же говорим об Android:)

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

Итак, давайте погрузимся в это чудесное приключение по получению уникального идентификатора устройства.
Читать дальше →
Подводные камни идентификации Android-устройства
Source: habrahabr

[Перевод] 5 уроков, которые мы усвоили, написав более 300 000 строк инфраструктурного кода

Краткий мастер-класс по разработке инфраструктурного кода

image

В октябре этого года я выступил с докладом на конференции HashiConf 2018, где рассказал о 5 ключевых уроках, которые я и мои коллеги из Gruntwork усвоили в процессе создания и поддержки библиотеки из более чем 300 000 строк инфраструктурного кода, используемой в производственных системах сотнями компаний. В этой публикации я поделюсь видео и слайдами с выступления, а также сокращенной текстовой версией описания 5 основных уроков.

Видео и слайды

Вступление: DevOps сейчас — в «каменном веке»

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

Читать дальше →
[Перевод] 5 уроков, которые мы усвоили, написав более 300 000 строк инфраструктурного кода
Source: habrahabr

Как взять сетевую инфраструктуру под свой контроль. Часть вторая. Чистка и документирование

image

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

Сейчас мы не будем говорить об аудите безопасности – этому будет посвящена третья часть.

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

Идеальная ситуация – это когда

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

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

В худшем варианте у вас будет

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

Понятно, что ваша ситуация где-то между, но, к сожалению, на этой шкале лучше – хуже с большой вероятностью, вы будете находиться ближе к худшему концу. Читать дальше →
Как взять сетевую инфраструктуру под свой контроль. Часть вторая. Чистка и документирование
Source: habrahabr

[Перевод] Будущее Kubernetes — за виртуальными машинами

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

Будущее Kubernetes — это виртуальные машины, а не контейнеры

По китайскому гороскопу 2018 год был годом собаки, но в технике это был год Kubernetes. Многие только сейчас узнают об этой революционной технологии, а IT-отделы повсеместно пытаются разработать «стратегию Kubernetes» [1]. Некоторые организации уже перевели на Kubernetes большие рабочие нагрузки.

[1] Если вы пытаетесь разработать стратегию Kubernetes, вы уже потерпели неудачу, но это тема для другой статьи.
Читать дальше →
[Перевод] Будущее Kubernetes — за виртуальными машинами
Source: habrahabr

[Из песочницы] PHP парсинг от А до Я. Грабли и возможные решения

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

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

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

Внимание. Данный материал не является призывом к действию, носит информационный характер с целью повышения квалификации и увеличения качества работы тестировщиков.
Читать дальше →
[Из песочницы] PHP парсинг от А до Я. Грабли и возможные решения
Source: habrahabr

Новый загрузчик Buhtrap

Сегодня мы расскажем вам о новом подходе к рассылке ВПО группировкой Buhtrap.

Модуль загрузчика

19 декабря нам стало известно о вредоносной рассылке, содержащей исполняемый файл (md5: faf833a1456e1bb85117d95c23892368). Файл принимал различные названия: «Сверка за декабрь.exe», «Док-ты среда.exe», «Документы 19.12.exe», «Закрывающие документы среда.exe».

Из интересного — файл написан на .Net, что не характерно для этой преступной группировки. Для декомпиляции .Net можно взять любое ПО: Reflector, dotPeek, dnSpy, ILSpy. В статье мы расскажем об особенностях реализации данного файла и о том, как мы его анализировали.
Читать дальше →
Новый загрузчик Buhtrap
Source: habrahabr

Universal Radio Hacker — легкий способ исследовать цифровые радиопротоколы


Universal Radio Hacker (URH) — невероятно простой и понятный инструмент для анализа цифровых радиопротоколов. В отличие от монстров вроде GNU Radio, освоить его можно за пять минут, без мучений.
Главные особенности URH:

  • Работает на всех платформах — на macOS/Linux/Windows, из коробки! Не нужно часами компилять километры зависимостей.
  • Поддерживает популярные SDR — нативная поддержка RTL-SDR, HackRF, LimeSDR, AirSpy и других.
  • Все в одном — все нужные инструменты встроены в одну программу: анализатор спектра для поиска частот, запись сигнала, интерпретатор цифрового сигнала для автоматического преобразования записанного сигнала в цифровые данные.
  • Поддерживает передачу — для проведения replay-атаки достаточно выделить мышкой нужный отрезок сигнала и нажать Replay. Великолепно!

В статье мы будем анализировать сигнал пульта от шлагбаума, при помощи народного RTL-SDR (радио из дешевого USB ТВ-тюнера) и macOS.

Читать дальше →
Universal Radio Hacker — легкий способ исследовать цифровые радиопротоколы
Source: habrahabr

[Перевод] Обучение с подкреплением на языке Python

Привет, коллеги!

В последней публикации уходящего года мы хотели упомянуть о Reinforcement Learning — теме, книгу на которую мы уже переводим.

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

Приятного чтения!
Читать дальше →
[Перевод] Обучение с подкреплением на языке Python
Source: habrahabr

Как мы тестируем Сбербанк Онлайн на iOS

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

Ситуация такова: предположим, разработчикам удалось убедить себя и бизнес в необходимости покрытия кодовой базы тестами. Со временем в проекте стало более десятка тысяч unit- и более тысячи UI-тестов. Такая большая тестовая база породила несколько проблем, о решении которых мы хотим рассказать.

В первой части статьи мы ознакомимся с трудностями, возникающими при работе с чистыми (не интеграционными) unit-тестами, во второй части будут рассмотрены UI-тесты. Чтобы узнать, как мы улучшаем стабильность тестовых прогонов, добро пожаловать под кат.
Читать дальше →
Как мы тестируем Сбербанк Онлайн на iOS
Source: habrahabr

[Из песочницы] Преобразование Фурье. The Fast and the Furious

Зачастую при разработке алгоритмов мы упираемся в предел вычислительной сложности, который, казалось бы, преодолеть невозможно. Преобразование Фурье имеет сложность $O(n^2)$, а быстрый вариант, предложенный около 1805 года Гаусом1 (и переизобретенный в 1965 году Джеймсом Кули и Джоном Тьюки) $O(nlog(n))$. В данной статье хочу вам показать, что можно получить результаты преобразования за линейное время $O(n)$ или даже достичь константной сложности $O(1)$ при определенных условиях, которые встречаются в реальных задачах.

Читать дальше →
[Из песочницы] Преобразование Фурье. The Fast and the Furious
Source: habrahabr