Начальная настройка AirWatch 1811

Данный пост является русским текстом по настройке MDM решения AirWatch. Пост создан на базе статьи, взятой из моей базы знаний. Оригинальная статья переписана на английском языке для охвата более широкой аудитории.

ПЛАН НАСТРОЙКИ

Установка AirWatch 1811

Данный пост является русским текстом по установке MDM решения AirWatch. Пост создан на базе статьи, взятой из моей базы знаний. Оригинальная статья будет переписана на английском языке для охвата более широкой аудитории.

Легенда

BE – (BackEnd server) AirWatch Admin Console
FE – (FrontEnd server) AirWatch Device Manage
SQL – Microsoft SQL Database Server

ПЛАН УСТАНОВКИ

[Python] – трюк с groupby

Дана строка текста “bbbbcccABBCcAD”, нужно вернуть список элементов, таких, чтобы у каждого элемента не было одинаковых с ним соседей. При этом нужно сохранить порядок элементов.

Решение:

from itertools import groupby
print([u for (u, _) in groupby(‘bbbbcccABBCcAD’)]) # -> [‘b’, ‘c’, ‘A’, ‘B’, ‘C’, ‘c’, ‘A’, ‘D’]

Объяснение:

Если бы я раньше получил такую задачку, то попробовал бы использовать множество set(). Но в множестве нет сохранения порядка элементов, и фильтрация идёт на уникальность всех элементов, а не только соседних. С другой стороны, itertools.groupby() принимает на вход любой объект-массив iterable, находит в нём одинаковые соседние элементы и возвращает их в кортеже (элемент, код группировки). Код группировки выкидываем (присвоив его бросовой переменной _), получаем искомый список.

Безопасность логинов и паролей

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

  • Для почтовых систем навроде gmail.com, mail.ru и т.д. все знаки после “+” в логине и до знака “@” не являются значимыми. То есть, E-Mail типа ivan+test01@gmail.com будет равен ящику ivan@gmail.com. А вот при регистрации на веб-порталах и услугах, все знаки логина значимые. Это значит, что можно зарегистрировать учётную запись на веб-портале под таким составным E-Mail – для каждого портала свой вариант (пример – ivan+ixbt@gmail.com для портала IXBT): письмо подтверждения придёт по адресу ivan@gmail.com, а вот при восстановлении пароля, логин вбить нужно будет полностью, чего потенциальный хакер не знает;
  • Придумать ко всем паролям несложный секретный довесок. Хранить пароли в менеджере паролей или записной книжке без довеска, а при вводе добавлять его. Если злоумышленник получит доступ или подглядит пароли из записей и попробует их, без довеска они окажутся нерабочими.

Походный свет

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

Свет! Много света!

Походный накамерный свет

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

Накамерный свет

Параллельные вычисления – инструменты

В языке Python присутствует ряд инструментов по написанию асинхронного кода. Я хочу рассмотреть их концептуально.

Концепции

Параллельные вычисления – материалы

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

Стоит определиться с целью: что именно даёт асинхронный код? Во-первых, это скорость работы, а скорее утилизация всей мощи современного многоядерного CPU. Если ранее (примерно до 2007 года) CPU ускорял код относительно незаметно для разработчика за счёт повышения тактовой частоты одного потока, то сейчас скорость потока есть практически постоянная величина, зато таких потоков стало множество параллельно работающих, и уже нужно писать намеренно такой код, который сумеет их все задействовать. Во-вторых, это масштабируемость работы: в терминах веб-серверов это возможность обслуживать растущее множество клиентских сессий без ущерба для производительности сервера.

(more…)