-Поиск по дневнику

Поиск сообщений в rss_rss_hh_new

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 17.03.2011
Записей:
Комментариев:
Написано: 51

Habrahabr/New








Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://habrahabr.ru/rss/new/.
Данный дневник сформирован из открытого RSS-источника по адресу http://feeds.feedburner.com/xtmb/hh-new-full, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

[Из песочницы] Определение номера пользователя Telegram с помощью брутфорса в адресной книге

Четверг, 01 Июня 2017 г. 13:21 + в цитатник
Здравствуйте, друзья. Сегодня я расскажу вам о том, как можно попытаться узнать номер человека в телеграме, зная только его ник.

Теория:

1. Добавляем номера в адресную книгу телефона до лимита (если он вообще есть в iOS или Android смартфонах)
2. Смотрим в профиль нужного человека
3. Если его номер есть в адресной книге — этот номер отобразится и в профиле телеграма
4. Если нет, продолжаем брутфорсить добавляя номера до победного конца

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

Скрин. №1 —
Вижу только ник
image

Скрин. №2 —
Добавляю номер в адресную книгу
image

Скрин. №3 —
Начинаю видеть контакт в телеграме
image

Скрин. №4 —
Начинаю видеть номер в профиле
image

Я понимаю, что это не совсем баг, а скорее фича, для поиска друзей, зарегистрированных в телеграме, но в телеграме нет настройки для отключения такого поиска меня по номеру телефона (и отображения моего номера, в профиле, даже если у кого-то мой номер есть в адресной книге) и добавлять, видимо, такую настройку не собираются, а это прямая угроза безопасности, ведь если злоумышленник узнает номер телефона, то он сможет перехватывать коды, идущие по смс для входа в аккаунт, или сможет удалить его, если включен дополнительный пароль. Как это делается уже не раз обсуждали и здесь и на гиктаймсе (через подкуп сотрудников салонов сотовой связи, например). А отсутствие возможности подключить Google Authenticator вместо смс меня ещё сильнее поражает, чем то, о чём этот топик.

Я писал об этой проблеме на security@telegram.org 3 месяца назад, а в ответ до сих пор полное молчание.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329982/


Метки:  

«Противостояние» PHDays VII: Новичкам везет или Грабим банки, ломаем GSM-ы

Четверг, 01 Июня 2017 г. 13:18 + в цитатник
В этом году мы (ЦАРКА Казахстан) в первый раз участвовали в битве Атакующих и Защитников (The Standoff) на PHDays в качестве злобных хакеров. В посте постараемся описать, как проходило мероприятие, за счет чего нам удалось выиграть и что в итоге лежало в том металлическом чемоданчике.

Вводная

Мы уже несколько лет посещаем PHDays нашей командой и в основном побеждали в мелких конкурсах. Поэтому в этом году нас интересовала только победа в основном конкурсе.

Состав

В этом году мы отправились на конференцию командой из 13 человек: пентестеры, реверсеры, хардварщики, сисадмин, к.ф.-м.н., студент, школьник и фитнес тренер. Но непосредственно в противостоянии участвовали семь человек.

image

Несколько ссылок для начала:

1) Сами правила The Standoff
2) На Хабре уже есть несколько постов по “Противостоянию” от Защитников и SOC: раз и два.

Подготовка

Из оборудования мы взяли:

MikroTik RB951Ui-2HnD — 1шт.
Zyxel Keenetic — 1 шт. (утерян)
Tplink 8port hub — 1шт
Alfa Usb Wifi Adapter — 5шт
SDR, Proxmark c LF и HF антеннами, BladeRF, HackRF, оборудование для GSM и т. д. Как вы можете догадаться, в аэропорту нас досматривали очень тщательно. А у нас руки так и чесались поднять собственную базовую станцию во время полета, чтобы пообщаться.

Также в офисе в Астане была подготовлена брут-машина (мы ее называем Brute Alice) c Radeon R9 290X на борту и доступом через VPN. Эта малышка сыграла одну из ключевых ролей в нашей победе.

Первый день

Прибыли мы на место уже в 8-9 утра. Мы были одними из первых и успели занять стол в самом дальнем углу. Доступа к локальной сети соревнования еще не было, и мы занялись организацией рабочего пространства: купили местных симок для интернета, настроили роутер, правила фаервола, создали wifi точку доступа KNFC (Kairat Nurtas Fan Club, клуб фанатов местной суперзвезды Кайрата Нуртаса), которую под конец соревнования другие команды нещадно атаковали, и стали ожидать начала соревнования. К 12 часам появился доступ к внутренней сети и нам дали логин и пароль к порталу с заданиями. Противостояние началось.


Система с тасками.

После просмотра списка тасков (а их было порядка 50) часть команды начала сканировать подсети, другая часть — искать уязвимости на веб ресурсах, а хардварщики сразу переключились на таски с GSM. Двое ребят сделали себе бейджики СМИ и начали ходить по командам атакующих и защитников, брать интервью (причем весьма успешно!) и фотографировать рабочие столы участников. Фоток им удалось сделать очень много.

Из добычи:

Пароль от teamviewer одного из организаторов соревнования. Давал доступ к экрану с управлением светофорами в городе. И мы не упустили возможность этим воспользоваться: нам удалось остановить движение в городе, но за “подглядывание” нам ничего не засчитали =) Хотя в правилах участия на социальную инженерию запретов не было.



До вечера в основном мы проводили разведку, пытались эксплуатировать сервисы. Вникали в суть инфраструктуры, разбирались с тасками, закидывали в местный портал bugbounty мелкие уязвимости и держались даже не в топ 5. Под вечер хардварщикам получилось выполнить таск с перехватом компромата на мэра города, что сразу обеспечило нам первое место до утра. За данный таск давали 150 000 публей (игровая валюта города).

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



И получив их поддержку, они ринулись на GSM сети.

Первичный скан на BladeRF с использованием GnuRadio блоков для расшифровки GSM трафика показал, что сеть полностью работает на 2G и к ней подключены несколько устройств с особыми номерами (предположительно боты в самой базовой станции), а также несколько устройств с номерами, которые формируются из IMSI самой симки. Последнее мы определили, подключившись к сети с помощью обычных телефонов (в Казахстане принято их называть “ЖайФоны”). На базовой станции отсутствовала идентификация по IMSI, что облегчило нам задачу подключения к сети с помощью жайфонов. Но мы были готовы и к другому исходу: мы бы просто создали виртуальные симки на базе osmocombb программ и телефона motorola c118, которые имели бы IMSI с идентификацией MNC и MMC как у базовой станции.

Но тут-то мы и застряли: нам не удавалось получить больше данных от BladeRF и GnuRadio, но было отчетливо видно, что пакеты еще присутствуют. Тогда мы решили подключить к сканированию 2G сети то, что было создано чтобы работать в 2G и чувствует в нем себя как рыба — motorola c118 телефон с Calypso GSM модемом внутри и osmocombb программами на бэкенде. Так как задача состояла в сканировании сети, мы использовали ветку программ от osmocombb под названием sylvain. В первые же минуты сканирования сети мы осознали, что в ней не осуществляется шифрование, точнее шифрование реализовано на уровне А5/0.

Мы прослушивали сеть с помощью реализации стека программ:

1) На самой мотороле была запущена прошивка osmocombb/master для compal e88 первого слоя layer1.highram.bin. Это layer1 модели OSI, который реализует всю физическую часть модема.
2) На хосте был запущен приемник osmocombb/sylvian в папке misc — ccch_scan. Этот инструмент позволяет принимать данные с layer1 и управляет им для поиска данных с определенного ARFCN, то есть базовой станции по каналу CCCH. Далее он позволяет отправить их по нужному адресу, в нашем случае loopback.
3) Loopback у нас прослушивался всеми любимым wireshark, который и показывал результаты сканирования.

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



В какой-то момент мы заметили высокую активность двух клиентов сети: они активно обменивались сообщениями. Как только в их переписке речь зашла о деньгах (благо, наши хардварщики в совершенстве знают английский), мы записали весь разговор. Оказалось, что разговор был между мэром города и кем-то еще про аффилированные структуры и коррупцию, “отлично! — подумали мы, — мы засекли тебя, плохой-плохой мэр!”.

Скрин, на котором видна переписка в wireshark:



И конечно, сама переписка:

Переписка
Secret sms chat:
to:901708
from: 901706
sms: Dear Tomas, I would like to talk about our deal, related to the sales network of vegetables and fruits. Can I call you now?

to: 901706
from: 901708
sms: Hello. I thought we already discised this topic yesterday. I have no time to talk with you…

to: 901706
from: 901708
sms: How much?

to:901708
from: 901706
sms: 10000 EUR.

from: 901708
to: 901706
sms: Well, ok. I'll wait for your payment. Hereby you can open five sale points downtown.

from: 901708
to: 901706
sms: And, BTW: nobody should know about this conversation. This is in both our interest.

Ночь

После того, как мы поднялись на первую строчку, возникло острое желание продержаться там до конца. Наша команда приняла решение остаться на ночь и продолжить ночные баталии. Часть ребят переключилась на SCADA-системы, другие пробовали ломать сам банк, в котором находились деньги участников и жителей города, хардварщики продолжали взламывать GSM (но к середине ночи все-таки ушли спать — так как какой-то гений выключил GSM сеть, которую уважаемым организаторам пришлось заново поднимать с утра). Был найден git-репозиторий с исходниками банка и API, через который можно было вытаскивать логины и md5-хеши пользователей банка. И тут началась самая жара. Команда RDot минут за 5-10 до нас нашла ту же самую уязвимость и уже начала выводить деньги пользователей на свои счета. Мы в несколько рук также оперативно начали менять пароли и выводить деньги на себя. В процессе перевода денег мы заметили, что кто-то пытается увести у нас сессию через XSS-снифер, благо, у них это не получилось т.к. XSS не отработала, но мы решили наказать нерадивого атакующего и начали генерировать фейковые cookie, похожие на оригинальные, и слать все это на удаленный атакующий сервер, чтобы засыпать их ложными данными. Также была обнаружена уязвимость Server-side Template Injection, но раскрутить мы ее не успели. В основном у большинства пользователей были четырех-пятизначные пароли, но у некоторых самых “жирных” аккаунтов были 12 значные пассы, которые сбрутились только к утру. Под утро нами и командой RDot были выведены практически все деньги со счетов с легкими паролями. В этот момент мы обратили внимание на то, что пароль от банковского аккаунта, выданного нам организаторами, состоял лишь из 12-ти hex символов в нижнем регистре. Мы предположили, что пароли к банковским аккаунтам других участников сгенерированы аналогичным образом, и, настроив “правильно” маску, мы начали брутить хэши команд соперников, одновременно поменяв свой собственный пароль на более сложный. Через пару часов малышка Alice выдала нам пароль от банковского аккаунта одной из команд атакующих! 5 минут и нам удалось перевести все их деньги на свой счет.

К сожалению, организаторы нам не засчитали перевод денег со счета другой команды и вернули им баланс.

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

Второй день

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

“Расскажу про задание с поиском и перехватом угнанной машины. Задание само по себе было сложным, но какой-то хакер сделал его ещё и весёлым. Мы уже смогли склонировать телефон вора, и оставалась последняя задача — написать на номер трекера внутри угнанной машины и перехватить контроль, но кто-то склонировал трекер. И когда я начал отправлять команды на трекер, этот кто-то начал отвечать за него. В какой-то момент он отправляет мне сообщение “u win!”, и я бегу к организатором — смотрите! А они с удивленным лицом: мы не программировали робота на такие ответы. Тогда мы и узнали, что какой-то хакер нас троллит. Он поднял настроение всей команде, организаторам и просто участникам.”

Но стоит осветить и технические подробности перехвата трекера автомобиля.

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

Было принято решение полностью скопировать мобильник вора — мы начали охоту за его IMSI. Каждый мобильник время от времени меняет свой TMSI, и в этот момент в открытой форме можно словить его IMSI, если искать пакеты локализации, точнее ее обновления. Найдя такой пакет, мы получили данные для клонирования телефона вора. Клонировали мы его с помощью программного обеспечения от osmocombb и виртуальной симки в motorola c118. Получив контроль, мы определили местоположение автомобиля и перевели управление им на один из наших жайфонов, чтобы никто не смог повторить наш успех, ведь мы перестали слать команды и эфир стал тихим после охоты.

Скрин перехвата контроля:



И, конечно, запомнилась локация самого автомобиля — как ни странно, он был в силиконовой долине:



Банк практически целый день не работал. К обеду у нас уже сбрутились пароли от “жирных” аккаунтов и мы сидели в ожидании того, что организаторы его откроют хотя бы временно, и это случилось! Мы попали в 5-минутное окно, когда им пришлось запустить банк, чтобы сменить пароли командам (после нашего взлома счетов команд), и в этот момент мы успели перекинуть еще 3 млн публей на свой счет. Этот момент был запечатлен на видео, когда на сцену вышли Бизоны и мы в режиме реального времени вернули лидерство обратно.




Так и получилось продержаться до конца мероприятия. До последнего момента сомневались, удастся ли удержать первое место. Но удача и Боги GSM были на нашей стороне.





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

PS: а чемодан содержал денежный приз на самом деле был пуст. Деньги были в отдельном конверте.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329980/


Метки:  

Машинное обучение — магия или наука?

Четверг, 01 Июня 2017 г. 13:16 + в цитатник

Это пятая публикация в рамках помощи участникам конкурса «SAP Кодер-2017».


18 мая 2017 года на презентации в офисе SAP Денис Савкин, руководитель Центра экспертизы SAP СНГ по решениям и технологиям, рассказал о принципах в основе машинного обучения. На реальных кейсах он показал, как технологии искусственного интеллекта могут изменить бизнес. Вопреки сложившемуся на рынке впечатлению, здесь нет никакой магии — лишь математика и ее правильное применение в соответствии с поставленной задачей. Предлагаем расшифровку его доклада.




Немного теории


Когда мы говорим с заказчиками о машинном обучении (machine learning), оно зачастую воспринимается как магия — «непонятно как» работающий и «не ясно кем созданный» черный ящик. Как и в любой магии, в результатах его работы сомневаются. В классических продуктах (ERP и т.д.) все понятно: сделал заказ превратил его в поступление; из поступления сформировал счет. Все просто и легко. А машинное обучение лежит за рамками этого понимания. Так есть ли в его основе вообще какая-либо наука?

Об этом я и расскажу.

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



В качестве примера на этом рисунке я привожу продукты SAP, оперирующие 5% корпоративной информации. Это те самые данные о сотрудниках, о производстве, о закупках, сбыте и т.д. Но кроме них существует еще огромное количество данных и знаний, которые в компании вообще никак не используются.

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

Интернет подтолкнул настоящий бум роста объема накопленной информации: за 2 тыс. лет своего существования человечество накопило порядка терабайта данных; а еще терабайт — за последние 2 года. И общий объем информации постоянно увеличивается. 90% данных, существующих на сегодняшний день, были созданы за последние 2 года. И каждый день создается еще 2,5 экзобайта данных, что эквивалентно примерно 7,5 тысяч Библиотек Конгресса США (одна из самых больших библиотек в мире).

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

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

История развития алгоритмов машинного обучения


Примерно в 70-х годах прошлого века появилось понятие баз данных и методы работы с ними. Отличный пример — язык SQL. Систему можно попросить: выбери мне всех сотрудников с фамилией Иванов; и система выбирает. Это простые механизмы, с них все и начиналось.



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

Машинное обучение (в рамках нашей иерархии) — это подкласс искусственного интеллекта: помимо него, туда входит и робототехника, и много всего другого. Само машинное обучение включает различные методы, в частности, работу с нейронными сетями, которые сейчас так популярны. И один из подклассов обучения нейронных сетей — это deep learning (глубокое обучение).

Здесь мы не будем подробно рассматривать классификацию методов машинного обучения. Я просто хотел показать, сколько всяких ветвлений есть у этого термина.  Здесь нейронные сети — это лишь маленький кусочек, как и deep learning. А все остальное — это множество математических методов, которые продолжают разрабатываться. Это большая наука, которая сейчас движется вперед с огромной скоростью, в том числе благодаря появлению совсем других аппаратных средств.

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

Как работает машинное обучение


Как же работает самый популярный на сегодняшний день алгоритм машинного обучения — нейронная сеть?

Представьте себе самое фантастическое животное. Оно может быть таким:



или таким:



или даже вот таким:



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

Любая математическая модель, основанная на обучении, работает точно так же. Это логично, ведь человечество всегда подсматривало за тем, как те или иные вещи реализованы в природе.
Таким образом первый алгоритм, который работает в machine learning, — это поиск закономерностей. Например, имея такой набор букв, мы можем заставить систему искать, какие слова из них можно составить:



Смотрите, как это работает. Человеческий мозг состоит из клеток — нейронов, связанных друг с другом.



Вся «магия» происходит в тот момент, когда электрический сигнал переходит от одной клетки к другой — этим и определяется наше с вами запоминание опыта.

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

Нейронная сеть функционирует на основе аналогичных описанным искусственных нейронов. Поясню на примере.

Представьте, что нам нужно сделать модель, которая определяет, едем мы в отпуск или нет. На наше решение влияют четыре фактора. Первый — стоимость; дорогой получается отдых или не дорогой. Дальше — хорошая будет погода в отпуске или плохая. Третий фактор — успею ли я доделать все дела на работе или придется в отпуске работать. И наконец последний фактор — вкусная ли там еда.

Понятно, что критерии для нас не равнозначны, поэтому я расставлю циферки («стоимость») каждого критерия по степени важности: 5 — это самый важный для меня параметр; погода — чуть менее важна, дальше работа и еда, имеющая наименьшую важность. Теперь мы можем сделать так, чтобы наш искусственный нейрон решал поставленную задачу.

Возьмем очень простую модель — бинарную оценку: стоимость хорошая — 1, плохая — 0; погода хорошая — 1, плохая — 0; и так далее. Просуммируем все баллы, и положительное решение о поездке в отпуск будем принимать, если набрали больше 6 — простой решающий нейрон.

Допустим, стоимость нашего отпуска маленькая, погода плохая, с работой завал, зато еда отличная. Набрали 6 баллов — в отпуск едем. Или предположим, ситуация изменилась: стоимость — высокая (плохо), с погодой — плохо, зато с работой и едой все хорошо. Набрали 3 балла — не едем.

Эта система называется обученная и, соответственно, нейроны в этой сети — обученные, потому что мы поставили необходимые коэффициенты. Это мои собственные коэффициенты, как я расставляю приоритеты при планировании поездки в отпуск. Таким образом, эта нейронная сеть обучена для меня. Для другого человека «стоимость» критериев будет иной.

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

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



Есть еще такой умный термин — глубокое обучение (deep learning). Это просто математический метод, который позволяет обучать внутренние слои нейронной сети (поэтому он и носит название deep learning). Без этого метода может оказаться, что при обучении коэффициенты проставляются в первом слое сети, но не внутри. Вот, собственно, и вся теория, которую я вам хотел показать.

В 70-х годах прошлого века математики придумали методы обучения сети. Но судьбу этого сегмента во многом определили две книжки. Еще в 60-х годах казалось, что на основе нейронных сетей сейчас будет реализован искусственный интеллект — будет прорыв. И вышла книга, где рассказывалось, что все задачи будем решать с помощью искусственного интеллекта. Однако коллега автора первой книги по университету в середине 70-х написал свое опровержение. В своей книге он доказывал, что все это — лишь миф, модель, которая позволяет решать только очень маленькие задачи. Популярность второй книги откинула математику нейронных сетей лет на 20. Ее автор впоследствии публично сожалел о своем творении, т.к. это оказало негативное влияние на математику, как науку, из-за последовавшего всеобщего разочарования.

С конца 70-х — начала 80-х — вплоть до начала 90-х нейронные сети находились в упадке. А потом опять пошел взлет. Были придуманы новые модели, созданы новые компьютеры. И сейчас Siri, Google-помощник и еще масса задач, в частности, распознавание речи и видео (в том числе, распознавание автомобильных номеров) реализовано на базе нейронных сетей.

Как происходит обучение


Рассмотрим этот процесс на простой задаче. Мы даем машине текст и хотим, чтобы машина могла сказать, имеет ли этот текст смысл.



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

Компьютер начинает перебирать. В нормальном тексте (например, в «Войне и мире») определенные сочетания букв встречаются с определенной частотой.



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



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



Это два разных подхода к решению подобных задач.

Живые примеры


Есть еще одна задача, которую я хотел бы показать. Смотрится она довольно интересно. Это задача распознавания изображения.

Есть вот такая игра: система просит нарисовать что-то. Например, за 20 секунд нарисуем траву. А теперь мы можем посмотреть, почему он соотнес наш рисунок с травой.

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

Эта задача решается только с помощью нейронных сетей (это самый простой и легкий способ). Все, что нужно алгоритму, — это большое количество — много-много людей, которые рисуют. Их легко найти в интернете.

А еще в интернете есть люди, которые пишут отзывы о продуктах, например, на «Яндекс.Маркете». Допустим, я описываю товар и начинаю со слов «понравился» или «не понравился». Я написал: «Мне этот телевизор вообще не понравился. Он ужасен, ставлю 1 звездочку» или «А вот этот телевизор мне очень понравился. Он замечательный, классный. За это я ставлю 5 звездочек». Система сама может обучить нейронную сеть тому, что слова «плохо», «ужасно», «отвратительно» —  это негативная реакция человека, а «хорошо», «замечательно», «великолепно» — позитивная. И если какая-нибудь компания, например, «Аэрофлот», захочет узнать, что о них пишут в интернете, им не придется заново писать такие словари. Она просто возьмет такую сеть и отправит ее по интернету. И очень быстро найдет те сообщения в социальных сетях, где про компанию «Аэрофлот» условно пишут хорошо и где пишут плохо. Особенно, если пишут много.

Это очень полезно для бизнеса. В настоящее время, если кто-то пишет отзыв в социальной сети о бизнесе, это сообщение лучше найти и как-то на него отреагировать. Если вы обращали внимание, сейчас в booking.com гостиницы отвечают почти на каждый отзыв постояльцев извинениями или благодарностью. Но Booking — специализированное место (понятно, что гостиница туда будет смотреть). А сообщение в Фейсбуке или Вконтакте еще надо найти, чтобы отреагировать. Решить эту задачу помогают как раз подобные интеллектуальные системы.

В Америке произошла такая история. Возможно, вы о ней слышали. Во время перелета с авиакомпанией United Airlines некому гитаристу сломали гитару. Он просил возместить ущерб (попытался решить вопрос мирным путем), но компания отказалась что-либо компенсировать. Тогда он пообещал написать им песню с негативным отзывом и разместить ее на YouTube. И он действительно так сделал. Песня разошлась миллионными тиражами, лайками и т.п. Сотрудники United Airlines пытались впоследствии договориться о том, чтобы автор убрал песню, но у них ничего не вышло.

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

Вот еще одна интересная картинка, отображающая, как нейронная сеть работает — как действует то самое «волшебство». Здесь у нас есть настоящая нейронная сеть. Нейроны соединены друг с другом веточкой. И на каждую такую веточку мы можем навести мышку и увидеть те самые коэффициенты (помните, я говорил вам про веса — здесь они точно также расставлены на каждой веточке). Коэффициенты — разные. Сейчас система их расставила в хаотичном порядке. Я могу добавлять нейроны или слои.

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

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

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

Продукты SAP


От теории переходим к тому, что происходит в компании SAP с точки зрения машинного обучения и искусственного интеллекта.

В Орландо в эти дни проходит SAP-форум (речь о SAPPHIRE, 16-18 мая 2017 года), — — это ежегодное событие, где на весь мир анонсируются самые интересные новинки, технологии и продукты. В этом году был анонсирован инновационный набор, который включает в себя технологические продукты, методики (подходы к внедрению этих продуктов) и акселераторы под разные индустрии для того, чтобы работать с клиентами с точки зрения цифровой трансформации.

Пока для многих «цифровая трансформация» — это красивое словосочетание. Чтобы оно перестало быть просто слоганом где-то на рекламном плакате, а превратилось в нечто осязаемое, у SAP появился новый пакет — SAP Leonardo.



Технологически SAP Leonardo состоит из нескольких кусочков. Первое — это технологии.



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

С точки зрения технологий в портфель SAP Leonardo входит целая платформа, с помощью которой можно создавать подобные решения. Она включает в себя алгоритмы machine learning, работу с большими данными (big data), Blockchain, умные системы, Интернет вещей и аналитику.

Под каждым из этих ромбиков лежит большой набор продуктов. К примеру, берем Big Data. Никакой Machine learning без больших данных работать не будет, поэтому сюда входят продукты, отвечающие за получение данных, их предварительную обработку и хранение. Далее подключается Machine learning, чтобы обработать данные, и аналитика, чтобы визуализировать результат. Мы считаем, что для цифровой трансформации это самые главные технологии.

Еще один слайд с SAPPHIRE, который я хотел показать (простите, что на английском):



Есть классические системы, которые мы называем транзакционными (или системами записи), а есть некие умные системы, включающие новые технологии.

Например, есть классическая хорошо известная SAP ERP, которая сейчас у нас называется SAP S/4HANA. Вместе с SAP Leonardo она превращается в новую ERP, которая включает в себя в том числе и элементы новых технологий.

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

В рамках SAPPHIRE было объявлено о выходе нескольких программных продуктов, включающих в себя технологии искусственного интеллекта: SAP Resume matching, SAP Cash applications, SAP Service ticket intelligence и SAP Brand Impact.



Далее я о каждом из них расскажу подробнее. Начну с решения, которое соотносит счета и платежи.

SAP Cash applications




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

Садится бухгалтер и начинает проводить соответствие, за что это 1 млн рублей заплатили, что это они такое продавали. Хорошо, когда каждый заказ связан с каждым счетом. Но на практике так не происходит. Мы сколько лет пытаемся добиться, чтобы предприятия внедрили электронный документооборот, когда все хранится не на бумаге, а каждый заказ, каждый документ связаны. Но воз и ныне там. Кое-кто переходит, а кое-кто нет. И проблема остается та же самая: вот счет на 1 млн рублей, а дальше, бухгалтера, как хотите, так его и разносите. Платеж может быть не равен счету,  платеж и счет могут быть в разных валютах, могут быть неправильно указаны реквизиты или наименование клиента и другие детали. Т.е. в этих документах полно ошибок. В итоге бухгалтера сидят с огромными пачками документов на столе и ищут в них ошибки.

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

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

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

Кстати, когда я рассказываю про машинное обучение школьникам, они всегда задают один и тот же вопрос — что же делать людям, которые потеряют работу с распространением методов машинного обучения? Это вопрос, на который нелегко ответить. Честно говоря, я стесняюсь отвечать на него школьникам. Все, что я могу сказать: учитесь лучше, чтобы не потерять работу.

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

Например, я недавно в банке открывал себе карточку. Сначала я заполнил анкету, описал свои параметры, показал реквизиты. Дальше система попросила подождать ее решения. Было очевидно, что на той стороне не было никакого человека, принимающего решение. Через две минуты система одобрила заявку. Меня попросили еще что-то сообщить и выдали определенный кредитный лимит на этой карточке. Первый раз столкнулся с человеком я только тогда, когда он привез мне карточку по указанному адресу.

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

Я не говорю уже о колл-центрах. Чтобы дозвониться в компании до человека, надо 10 раз нажать 0, 1, 2, 3. Его там еще найти надо в голосовом меню. Но я, как потребитель, второй раз уже не буду звонить в колл-центр, по голосовому меню которого я буду 20 лет бродить. Так что дальше встанет вопрос эффективности этого колл-центра (чтобы на той стороне был практически человек).

Service tickets intelligence


Следующая типовая задача — Service tickets intelligence



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

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

SAP resume matching


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

SAP Brand Impact


Фантастически популярная тема сейчас — распознавание образов. Например, стоит новый холодильник от компании Coca-cola. Цель компании Кока-кола заключается в том, чтобы в ее брендованном холодильнике стояла только продукция Coca-cola, а не пиво, мороженое или еще что-либо (холодильник должен использоваться по назначению). Поэтому устанавливается камера наблюдения. Следить за соблюдением условий установки холодильника, а также за появлением бренда на видео в иных ситуациях позволяет еще одно типовое решение — SAP Brand Impact.

Многие компании хотят посмотреть, как их продукция представлена на локальном рынке. Например, компания BMW может пожелать узнать, эффективно ли вкладываются деньги в рекламу продукции на рынке России.

Во-первых, сколько-то рекламы они дают например на эфирных телевизионных каналах. Кроме того, машины BMW появляются в фильмах, в журналах и т.п.

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

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

Кстати, знаете ли вы, чем промышленное решение в сфере машинного обучения отличается от любого непромышленного? Поясню на примере.

Много кто делает распознавание текста на видео. Наши коллеги занимаются этой задачей в инновационном центре Израиля. С использованием типового аппаратного обучения получилось примерно 1 кадр в 6 секунд (можно представить, какие нужны сервера и распараллеливание задачи, чтобы посмотреть весь эфир). Поэтому было заключено соглашение с компанией NVidia, которая создает отличные графические видеокарты. Оказалось, что работа с нейронными сетями — это матричные операции — отлично выполняются на этих видеокартах.

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

Хочу отметить, что представленная выше карта продуктов SAP — предварительный вариант. Т.е. каждая запись здесь может поменяться. Я ее демонстрирую лишь для того, чтобы показать, что нейронные сети — это концепция, потенциально применимая к разным сценариям. Сейчас в голове у SAP множество идей продуктов, в которые  можно добавить машинное обучение и искусственный интеллект. Это и умные боты, и работа с социальными сетями, и работа по рекомендации карьеры, и риск платежей (или неплатежей), и поддержание беседы. К примеру, систему S/4HANA (систему ERP) мы  уже сейчас разрабатываем таким образом, чтобы с ней можно было пообщаться.

Все эти инструменты уже доступны или будут доступны в ближайшем будущем. Хотя еще двадцать лет назад такие инструменты описывались в научно-фантастической литературе, в их основе нет никакой магии — лишь математические алгоритмы и обучение на больших объемах данных. И дальнейшее развитие этого инструментария воплотит в жизнь еще немало смелых фантазий.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329930/


Метки:  

Прав ли был Gartner, прогнозируя смену подхода к обеспечению ИБ?

Четверг, 01 Июня 2017 г. 13:02 + в цитатник


В 2013 году аналитик Нейл МакДональд из авторитетной консалтинговой компании Gartner прогнозировал, что к 2020 году традиционные стратегии информационной безопасности устареют. Сбываются ли прогнозы?

Недавно я наткнулся на статью аналитика Нейла МакДональда из Gartner под названием «Prevention Is Futile in 2020: Protect Information Via Pervasive Monitoring and Collective Intelligence». Она была опубликована еще в 2013 году, но в 2016 году она была обновлена. В ней автор рассуждает о том, как поменяются подходы к обеспечению информационной безопасности предприятий в ближайшие годы на период с 2013 по 2020 годы.
Интересно, прав ли был тогда в своих прогнозах Gartner?

Вот некоторые моменты в статье, на которые я обратил внимание:

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

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

2. К 2020 году 60% корпоративных бюджетов на ИБ будет выделено на решения с технологиями мгновенного обнаружения атак и реагирования на них

Сложно сказать, достигнем ли мы показателя в 60%, особенно с учетом непростой экономической ситуации. Но все же тенденция, на мой взгляд, прослеживается. Например, мы в Panda Security видим, что в последние годы предприятия все более активно тратят свои бюджеты именно на подобные технологии (в частности, EDR), т.к. риски оказаться жертвой неизвестной угрозы или направленной атаки в последнее время выросли многократно, причем независимо от размера предприятия. А ущерб вполне очевиден – это нарушение конфиденциальности и целостности корпоративной информации.

3. К 2018 году 80% решений для защиты конечных устройств будут включать в себя возможности мониторинга активности пользователей и экспертную информацию, в отличие от менее 5% в 2013 году

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

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

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

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



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

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

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

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

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

Честно скажу, мне эта статья показалась интересной еще и в том плане, что наш подход, реализованный в решении Panda Adaptive Defense 360, соответствует прогнозам автора этой статьи. Я помню, как в 2013 году мы как раз тестировали прототип семейства решений Adaptive Defense, обкатывая совершенно новую модель безопасности. Сейчас, спустя несколько лет, я вижу, что прогнозы Gartner сбываются, а выбранный нами путь, надеюсь, оказался верным.

P.S. В заключение не удержался, чтобы не предложить Вам посмотреть видеообзор, где осуществляется попытка заражения компьютера набором различных свежих вариантов шифровальщиков (WannaCry 2.0, Cerber, Spora, Razy, Goldeneye), а также других вредоносных программ. На этом компьютере стоит Adaptive Defense 360 с отключенным антивирусом (активирован только модуль расширенной защиты от неизвестных угроз) и файерволом, также отключен брандмауэр в Windows и Windows Defender:



Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329978/


Метки:  

Фишинг «своими руками». Опыт компании «Актив», часть вторая

Четверг, 01 Июня 2017 г. 11:46 + в цитатник

В первой статье я рассказал о теории вопроса, теперь же от теории перейдем к практике. Итак, мы успешно установили систему, настроили ее и готовы приступить к «фишингу» на собственных сотрудниках :)


План


План у нас достаточно простой.
На первом этапе мы рассылаем несколько разных писем по всем сотрудникам. Рассылки выбираем персонифицированные (спирфишинг). Ссылка в рассылке ведет через пустую страницу (которая нужна для анализа переходов) на оригинальную страницу сервиса. Первый этап посвящен по сути чистому эксперименту с целью определения всей глубины проблемы. После первого письма мы официально объявляем всем сотрудникам, что письма рассылали мы и направляем всех на страницу с обучением по борьбе с фишингом.
Через неделю проводим второй этап, похожий на первый (письма с новым содержанием), но ссылка в письмах уже напрямую ведет на нашу страницу обучения. Третий этап — контрольный. По итогам проводим сравнение и видим динамику переходов по ссылке и обращений в ИТ-отдел. С теми, кто продолжает «попадаться», проводим индивидуальную работу. План в целом был выполнен и признан успешным, но жизнь внесла в него коррективы.


Сбербанк


В нашей компании, как и во многих, зарплата перечисляется на карты. Карты Сбербанка занимают лидирующие позиции. Почему бы не начать фишинг с проверки «Сбербанком», подумали мы, и сделали первый шаблон писем, который выглядел следующим образом (к слову, этот и все остальные шаблоны, мы не придумали сами, а нашли его в интернете). И вот наступил день «X», и сотрудники получи подобное письмо.



По ссылке мы сделали очень простую страницу:


      
      
      
      
      
      
      
       

Как видно из кода страницы, происходил редирект на настоящий сайт «Сбербанка». Нам был важен лишь сам факт перехода.


Госуслуги


Сбербанк — это хорошо, но одного его для первой рассылки нам показалось недостаточно. Что же еще будет интересно сразу всем сотрудникам компании? Госуслуги. Они все больше и больше входят в нашу жизнь и множество людей ими пользуются, соответственно, это вполне достойный объект для рассылки. Побродив по просторам сити, подвернулся и интересный спам-шаблон:



Ссылка снова была пустая, страница во многом аналогичная сбербанковской, но ссылающаяся на другой ресурс.


      
      
      
      
      
      
      
       

Результаты первого этапа


Итак, мы запустили рассылку. Первый час-два была тишина: кто-то переходил по ссылке, кто-то не переходил. Затем в ИТ-отделе стали раздаваться звонки. Стоит пояснить, что сотрудники у нас в компании достаточно продвинутые. Рядовой менеджер у нас должен знать, что такое PKI и с чем его едят. Поэтому самое мягкое, что мы получали по телефону или в jira были сообщения вида «Какой-то странный спам к нам пришел. Подкрутите спам-фильтры». Ближе к обеду пришли на работу программисты, и они заинтересовались нашими письма. Довольно быстро был обнаружен наш сервер рассылки, и вот тут началась небольшая паника — нас что взломали? Пришлось провести небольшую разъяснительную работу с рядом руководителей и погасить панику, но сарафанное радио было уже не остановить. На этом этапе мы поняли, что допустили одну ошибку.


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

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


Бухгалтерия


Отдельной истории заслуживает реакция бухгалтерии. Бухгалтерия принимает участие в выплате зарплаты сотрудникам, и получив наши «письма счастья от Сбербанка», не могла не отреагировать. Сделала она это бурно и прекрасно. Лучшей реакции при реальном «фишинге» нельзя и представить! Бухгалтерия сделала три вещи. Во-первых, позвонили в Сбербанка и уточнили подлинность писем. В Сбербанке объяснили, что это фишинг, не нужно ничего скачивать и переходить по ссылкам. Во-вторых, сотрудники бухгалтерии сообщили в ИТ -отдел об инциденте с спам-рассылкой. И самое ценное, бухгалтерия предупредила всех сотрудников компании об опасности полученных писем.



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


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

Социальные сети


Сотрудники пользуются социальными сетями, и мы одновременно мониторили их реакцию на этих ресурсах.



Посты вызывали интересные дискуссии (следует учесть, что «тусовка» наших сотрудников весьма «ибэшная»).



Обсуждались интересные теории получения базы почтовых адресов.



Обучение


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



Контрольный этап


Второй этап происходил уже достаточно спокойно. Ни бурного обсуждения, ни конспиративных теорий не было. Те, кто переходили по ссылке, попадали на нашу страницу обучения и понимали, что это «ИТ-отдел снова запустил проверку». Интересней была реакция на контрольный этап проверки без страниц обучения. Ее можно охарактеризовать следующим тикетом:



Все больше и больше сотрудников реагировали так, как нам было нужно.


Итоги


Чего же нам в итоге удалось достичь:



Самое важное – мы научили сотрудников не переходить по подозрительным ссылкам. С 39% на первом этапе нам удалось снизить число перешедших до 9%. Т.е. периметр возможной атаки был уменьшен в 4 раза. Увеличилось число людей, которые стали не просто игнорировать фишинговые письма, но стали сообщать о них. Стоит отдельно заметить, что система фиксирует конкретных лиц, и с оставшимися 9% уже вполне можно работать персонально, что мы успешно и делаем.


Вместо заключения,


хочу привести еще несколько писем и приложить ссылки на архивы с образцами фишинг-писем и обучающую страницу.



Данное письмо имело определенный «успех» на контрольном этапе.



В сезон сдачи отчётностей письма из налоговой очень актуальны.



Банки в фишинге никогда не теряют актуальности.
Как и обещал, прикладываю два архива:



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

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329538/


Метки:  

Сколько технологий нужно Яндексу, чтобы поиск находил свежие документы почти моментально

Четверг, 01 Июня 2017 г. 11:29 + в цитатник

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




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


1. Почему свежесть?


Интерес к любому событию в течение нескольких дней угасает практически до нуля, если, конечно, это событие не получает какого-либо дальнейшего развития. Мы проводили исследование, из которого и родилось это утверждение: оказывается, в среднем 73% пользователей интересуется событием непосредственно в день, когда оно произошло, и только 3% читателей приходит на ресурсы спустя трое суток и более после публикации. С момента проведения этого исследования прошло уже много лет, но в целом ситуация не изменилась. И даже статьи на habrahabr.ru получают наибольшее количество поисковых переходов в первые несколько суток своего существования.


Своевременно продемонстрированная свежесть – важная характеристика не только для веб-поиска. Свежесть нужна также и в поиске по картинкам и видео, поисковых подсказках; разумеется, в новостных агрегаторах и СМИ. Да что уж там: даже в кинотеатр мы в большинстве ситуаций идём на новый фильм, а не на давно вышедший!


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


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


1.1. Как понять, что свежесть нужна


В той или иной мере свежесть необходима в 10-20% запросов, которые пользователи задают в Яндекс.


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


Рассмотрим для примера график количества кликов на свежие документы во время проведения выборов в сентябре 2016 года:


image

Хорошо видно, как в день выборов потребность в свежем постепенно нарастала, пока не достигла своего пика в 22:00. На следующий день повышенный интерес к свежему сохранялся, но уже через сутки вернулся примерно к обычным значениям. Другими словами, интерес к событию меняется с течением времени. Поэтому первая идея, полезная для определения потребности в свежем – «если какие-то запросы вдруг начинают задавать чаще, наверное, что-то произошло, и пользователям стоит показать свежие документы». Рассмотренная ситуация интересна и ещё по одной причине: интерес к свежему был прогнозируем заранее, т.к. дата выборов была известна задолго до их проведения.


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


image

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


Совсем иначе выглядит ситуация, когда происходит что-то неожиданное. Неожиданные резонансные события обычно не связаны ни с чем хорошим, поэтому просто посмотрим на графики без привязки к датам и конкретным происшествиям:


image

Уже в первые полчаса после произошедшего пользовательский интерес к свежему вырастает почти на порядок. Доля свежих запросов среди всех запросов в Поиск в такие моменты может увеличиваться до 25%. Неожиданные события хорошо детектируются резким всплеском пользовательского интереса, но такие всплески нужно определять в течение считанных минут после возникновения. Мы уже рассказывали о технологии Real Time MapReduce, которая позволяет Яндексу обрабатывать поисковые логи и доставлять результаты вычислений в Поиск в реальном времени.


1.2. Как представлена Свежесть в Поиске Яндекса


Сейчас мы поговорим о том, как свежие результаты представляются в поисковой выдаче. Рассмотрим запрос «россия финляндия», заданный 22 мая 2017 года. Этот запрос показателен, потому что при ответе на него Поиск демонстрирует практически все функциональные элементы, связанные с отработкой свежих запросов.


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


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


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


image

2. Как Свежесть попадает в поисковую выдачу


2.1. Модель Wide pFound


Свежие документы подмешиваются в выдачу по модели wide pFound. Эта модель в своё время была предложена для задачи разнообразия поисковой выдачи, вы можете посмотреть соответствующий доклад yafinder на YaC'2011, посвященный этому: https://events.yandex.ru/lib/talks/12/. Оказалось, что модель подходит для более широкого круга задач, в частности, для подмешивания свежих результатов.


В этой модели мы предполагаем, что пользователь, задавая конкретный поисковый запрос, имеет в виду один из интентов (интересов, тематик,...). Например, задавая запрос «ягуар», пользователь может иметь в виду автомобиль, напиток или животное. Запрос «котики» может предполагать потребность в соответствующих картинках, видео или же просто статьях. Запрос «евровидение» в определённые моменты наверняка требует самых актуальных (свежих!) новостей о ходе конкурса или подготовки к нему, в другие более вероятной потребностью представляется страница Википедии со списком победителей прошлых лет. Среди интентов нужно особо выделить специальный интент, который у нас обозначается $*$ – это интент «всё остальное», который соответствует обычной органической выдаче.


Задача поисковой системы заключается в том, чтобы подобрать для каждого пользователя и его запроса набор подходящих интентов, а затем правильным образом составить из релевантных этим интентам документов выдачу. В модели wide pFound мы считаем, что каждому из интентов соответствует некоторый вес, обозначающий вероятность пользовательского интереса именно к этому интенту, а для каждого документа на выдаче известен вектор его релевантностей для всех рассматриваемых интентов. Тогда для каждого интента можно расчитать метрику pFound – вероятность того, что наша выдача отвечает на запрос пользователя, если он имел в виду именно этот интент. Wide pFound – метрика, равная сумме взвешенных весами интентов pFound'ов по каждому из интентов:


$wpFound = \sum_{i=1}^m iw_i \cdot pFound_i,$


где $pFound_i$ — вероятность найти релевантный документ в выдаче, если пользователь имел в виду $i$-й интент.


Пусть, например, по некоторому запросу вес интента свежести равен 0.9, а релевантности документов соответствуют следующей таблице.


image

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


image

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


2.2. Обучение по кликам


Множество документов, предназначенных для свежего ранжирования, меняется с каждой минутой: появляются новые документы, исчезают старые. Из-за этого возникают сложности с использованием оценок, полученных в прошлом, т.к. и факторы, и оценки документов меняются с течением времени. Например, в 12:00 новость о том, что где-то произошел пожар, может быть релевантной, а в 14:00 уже нет, поскольку пожар к этому времени уже локализован. Поэтому, чтобы оценить релевантность свежей выдачи в 14:00, не удастся обойтись оценкой лишь новых документов: придется пересмотреть релевантности абсолютно всех свежих документов на выдаче.


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


2.2.1. Обучение по кликам в ранжировании


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


image

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


Можно предположить, что документ $df_1$ предпочтительнее, чем документы $df_2$ и $df_3$, а вот сравнить $df_2$ и $df_3$ между собой уже достаточно сложно. Но, например, можно считать, что $df_2$ всё-таки лучше, т.к. текущая формула ранжирования предпочитает именно его.


Поэтому можно сформировать выборку несколькими различными способами:


  1. Для задачи попарной классификации: будем обучать формулу предпочитать документ $df_1$ документам $df_2$ и $df_3$.
  2. Для задачи pointwise-классификации или регрессии: отнесём к положительному классу $df_1$, а к отрицательному – $df_2$ и $df_3$.
  3. Для задачи ранжирования: потребуем от формулы восстановить порядок $df_1 > df_2 > df_3$.

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


2.2.2. Обучение по кликам в детекции


Рассмотрим две схемы обучения детекции свежего по кликам, которыми мы пользовались в разное время. Каждая из этих схем решает задачу так называемых контекстных многоруких бандитов. Контекстом в данном случае являются факторы, вычисляемые по пользовательскому запросу. Среди относящихся к свежести имело бы смысл упомянуть несколько: «контрастность» запроса (например, отношение частоты запроса за последние сутки к его частоте за последнюю неделю), количество новостей, написанных за последнее время на эту тему, CTR свежести по запросу и так далее.


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


Можно использовать специальный эксперимент, в котором свежесть показывается на «случайных» позициях. Интент свежести – число от нуля до единицы, которое можно выбирать из небольшого набора — скажем, чисел, кратных 0.05. Тогда задача сводится к выбору одного из 21 различных значений. Это и есть задача о многоруких бандитах. Откликом на наш выбор будет некоторое поведение пользователя на выдаче – например, клик на какой-либо результат, а задача машинного обучения будет формулироваться в терминах выбора величины интента свежести, для которой вероятность этого отлика максимальна. Этот способ дает очень хорошие результаты, но у него есть один значительный недостаток: сама процедура сбора кликового сигнала очень сильно ухудшает выдачу для пользователей, т.к. большинство показов свежего оказываются нерелевантны.


Если же уже имеется некоторая формула $F_0$ детекции свежести – подобранная по асессорским оценкам или же методом, описанным выше, — то ее значение можно изменять на небольшую случайную величину, а затем предсказывать оптимальное значение изменения её предсказания так же, как это делалось выше. Если говорить точнее, то положим, что на текущем запросе формула предсказывает вес интента $F_0(features) = iw_f$. Прибавим к этому весу небольшую случайную добавку: $iw_f + \epsilon$, где $\epsilon$ – величина из небольшого дискретного множества значений. Например, $\epsilon \in {-0.1,0.0,+0.1}$. Тогда можно обучить формулу $F_1$, которая будет предсказывать оптимальную величину добавки, а в качестве новой формулы использовать сумму двух: $F_0(features) + F_1(features)$.


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


3. Когда Свежесть работает хорошо


Наконец, хотелось бы на примере нескольких событий рассказать о показателях, при помощи которых мы понимаем, что Свежесть работает хорошо.


Начать хотелось бы с графика общей актуальности результатов поиска. Этот график строится компанией "Ашманов и партнёры", так что можно не сомневаться в его объективности:


Здесь хорошо виден прогресс Яндекса (красная линия) в скорости индексации документов, который был достигнут в течение последнего года. Наш робот действительно способен за считанные минуты узнать о появлении нового документа и доставить его до поискового индекса Свежести с тем, чтобы он был показан пользователям по релевантным запросам.


Рассмотрим для примера новость о квалификации сборной Бразилии на ЧМ-2018. Документ появился на сайте издательства в 10:56, и уже в 10:58 мы впервые показали его на выдаче пользователю, а вплоть до 11:00 он был показан еще порядка двадцати раз по релевантным запросам. По этой схеме можно построить и общую метрику, а не только изучать конкретные документы. Возьмём, например, все достаточно популярные документы (которые показывались на выдачах хотя бы 1000 раз в день) и посмотрим на медианное время между их публикацией и первым показом на выдаче.


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


image

Когда происходит какое-нибудь достаточно крупное событие, важно сразу начать отвечать пользователям на соответствующие запросы максимально актуальными документами. Иногда это видно на глобальных графиках возраста свежих документов на выдачах. Мы постоянно следим за тем, какая доля показанных документов имеет возраст меньше 10 минут, получаса, часа, двух часов и так далее. За счет того, что интерес к событиям всё-таки растянут во времени, доля такого рода документов редко превышает 50%. Но бывают случаи, когда графики ведут себя так:


image

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


4. Заключение


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


Stay tuned!

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329946/


Метки:  

Жизнь: перезагрузка. Репортаж с отборов в Университет Иннополис

Четверг, 01 Июня 2017 г. 11:14 + в цитатник
Инновационный город под Казанью появился лишь пять лет назад, но уже успел обрасти сплетнями и противоречиями. Свободная экономическая зона, крутое IT-образование по западным программам, доступная инфраструктура и большие возможности для IT-развития и бизнеса. Университет, где не тратят время впустую. Город, где не воруют. Все это звучит как сказка или сюжет фантастического кино. Искать подвох мы будем в самом Университете Иннополиса во время очного отбора для абитуриентов. Читать далее

https://habrahabr.ru/post/329364/


Метки:  

«Готовимся к переходу на Angular 4»: Tinkoff.ru о JS-разработке

Четверг, 01 Июня 2017 г. 10:26 + в цитатник

Как известно, клиенты Tinkoff.ru видят перед собой не отделение банка, а интерфейс сайта или мобильного приложения — так что для компании две эти вещи особенно важны. О мобильной разработке мы её недавно уже расспрашивали. А теперь в преддверии конференции HolyJS, где разработчик Tinkoff.ru Алексей Носов выступит с докладом, задали вопросы о JS/фронтенде: и самому Алексею, и руководителю HR-проектов компании Ольге Шпунтенко.


Алексей Носов


— Вводный вопрос: над чем вы работаете в компании?

— Я занимаюсь проектами дистанционного клиентского обслуживания. Хоть у меня и внутренние заказчики, стратегически мы занимаемся улучшением качества нашего сервиса. Например, накапливается определённое количество пожеланий от клиентов по какой-то конкретной user-story, и они встают не в бэклог, а исполняются вполне себе быстро. Мы оптимизируем наши существующие проекты не всегда в рамках продукта, а в рамках клиентского обслуживания, влияем на конверсию.

— Год назад под хабрапостом «Как мы разрабатываем новый фронтенд Tinkoff.ru» можно было прочитать, что компания не испытывает необходимости в Redux, а сейчас в ваших вакансиях можно увидеть его упоминания. За год ситуация изменилась?

— Когда мы начинали, Redux был в зачаточном состоянии, непонятно, куда и как бы он развивался. Сейчас мы используем Flux, он гораздо больше подходит нашим требованиям к архитектуре. Тем не менее, это не мешает нам брать полезные штуки из Redux. В вакансиях мы пишем про Redux, потому что опыт его использования для нас индикатор: кандидат что-то понимает про современную архитектуру приложений, как управлять потоками данных React/Redux приложений, и, значит, довольно быстро разберётся в нашей архитектуре.

— И банк в целом, и лично вы используете RxJS — а можете ли рассказать подробнее? Почему изначально ощутили потребность в нём? Столкнулись ли с подводными камнями?

— У нас была проблема с тайпингами для специфичных классов Rx, используемых в тестировании. Сам по себе RxJS достаточно тяжеловесный, но, если выбрать правильную сборку, то вес можно уменьшить. Вообще, RxJS — это библиотека, позволяющая работать асинхронными потоками данных, которые можно рассматривать в качестве массивов и реализовать парадигму реактивного программирования для связи между собой компонентов приложений, генерирующих и потребляющих эти события. С помощью Rx можно в несколько строк реализовать сложную логику с помощью чистых функций, избавившись от возможных side-эффектов и проблем на этапе отладки.

В «Тинькофф для Бизнеса» мы повсеместно используем RxJS. Преимущества можно загуглить — как минимум, это удобное связывание данных, one way data flow, что позволяет не путаться с направлением данных. Ощутили потребность в RxJS, когда стало сложно поддерживать старые приложения на первом Ангуляре, использующие промисы и эмиттеры, которые были слабо связаны и про которые можно было забыть. Когда мы переписали наш мессенджер на Angular 2 и RxJS, сразу повысилась производительность, облегчилась поддержка. Подводных камней нет, но, конечно, есть порог входа — нужно перестроить мышление (т.н. потоки данных).

— Среди бэкендеров банк известен активным использованием Scala, что довольно необычно — а в технологическом стеке фронтэнда есть что-нибудь настолько же неожиданное?

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

— Чего ждать от вашего доклада на HolyJS?

— Я буду рассказывать про кобраузинг — демонстрацию экрана нашего клиента оператору колл-центра. Доклад называется «Как это сделать легко», но это совсем не легко — объяснить бабушке из Тамбова, как купить акции Амазона. Технических подробностей раскрывать не буду, приходите на доклад :)

Ольга Шпунтенко


— Tinkoff.ru очень нетипичный банк — а как эта необычность сказывается на JS-разработке, в чём оказывается ваша специфика?

— Наша специфика — сначала сделать MVP, проверить идею, и, если она выстреливает, оптимизировать и развивать дальше.

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

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

— В компании давно использовали AngularJS, затем перешли к новому Angular («Angular 2»). А стал ли для вас значимым событием недавний выход 4.0 и собираетесь ли переходить на него?

— Готовимся к переходу на Angular 4, уже перевели один из наших проектов — Стартер (это бутстрэп, с которого мы запускаем все наши новые проекты). Преимущества в том, что в нём оптимизирована работа с АOТ и серверным рендерингом. Есть некоторые трудности для гибридных приложений — например, проблемы с upgrade-адаптером, но мы их скоро полностью переведём на Angular 2.

— Tinkoff.ru ещё и проводит митапы по Angular, и с последнего нет видеозаписей — в будущем стоит внимательно следить за расписанием, чтобы заставать их лично? Почему из возможных технологий митапы сосредоточились именно на Ангуляре?

— Последний митап был с онлайн-трансляцией, потому что мы уже не вмещаем всех желающих :) Все видео положим на официальный канал нашего митапа на ютюбе, и на нашем сайте meetup.tinkoff.ru. Там же можно оставить свой е-мэйл, чтобы получать оповещения о предстоящих митапах — так точно не пропустите.

Мы с удовольствием принимаем у себя разные комьюнити, и наши ребята участвуют в разных митапах и конференциях. Митап по Ангуляру мы решили проводить по очень простой причине — на тот момент их никто не делал :) Документации было тогда мало (на русском так и вообще не было), а у нас уже было что показать на проде. А вечный холивар между Реактом и Ангуляром вообще благодатная тема — всегда есть что обсудить, поделиться подходами. Ну, и набросить, конечно.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329968/


Метки:  

Стартапы и ненормальное программирование. TBD

Четверг, 01 Июня 2017 г. 10:05 + в цитатник

Метки:  

[Перевод] Как поменьше беспокоиться о собственной бездарности

Четверг, 01 Июня 2017 г. 10:00 + в цитатник


Только что я столкнулся с еще одним проявлением синдрома самозванца: «Я правда разработчик — или просто хорошо гуглю?»

Далее следовал ответ, в котором я, однако, не увидел главного — поэтому ответить придется мне: слишком уж многие боятся без каких-либо оснований.

Переведено в Alconost

Если информацию легко найти, это не делает человека глупым


Частенько мне доводится слышать одну историю — полагаю, подлинность ее сомнительна, но, как бы там ни было, суть такова. Когда у Эйнштейна попросили номер телефона, он полез его искать и сказал: «Зачем запоминать то, что можно найти менее чем за две минуты?»

В 80-е в ботаники могли зачислить просто за то, что у тебя была энциклопедия, причем большую часть ее и читать не нужно было: в моем доме была очень интересная энциклопедия 1937 года, и статья о нацистской партии в ней содержала всего два абзаца, в которых говорилось, что партия не представляет собой ничего серьёзного. Так я оказался в «клубе умников»: достаточно было знать о существовании одного из самых вопиюще ошибочных фрагментов текста из когда-либо написанных — причем эти знания я почерпнул из непримечательного источника, которым пользовался наравне с остальными. Все потому, что тогда узнать что-то интересное было трудно, и одно лишь побуждение искать превращало тебя в ботаника.

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

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

Забудьте всю эту чушь о любви к работе


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

Если бы без любви к работе нельзя было бы работать, цивилизация рухнула бы. Уверен, кто-то получает интеллектуальное удовлетворение, сравнивая разницу в скорости работы i++ и ++i в циклах for — так и слава богу! — ведь должен же кто-то программировать системы наведения ядерных ракет. Остальные же просто надеются, что количество непрочитанных предупреждений в папке «debug» электронной почты не будет увеличиваться слишком быстро — чтобы хоть успевать разбираться с этими ошибками.

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

За живчиками идите в отдел продаж


Для современных стартапов высокоэффективное безразличие — чуть ли худшее оскорбление. Ребята, которые страстно любили хакать системы на ленточных накопителях, создали технологии, благодаря которым у нас теперь куча компаний состоят из отдела продаж и технического отдела, а вся остальная работа передается на сайт другой компании… состоящей из отдела продаж и технического отдела. Если занимаешься продажами, то любить свое дело (или притворяться, что любишь) — это неотъемлемая часть работы. Именно это позволяет зарабатывать. А для технического отдела главная задача — заставить что-либо функционировать, и здесь уже можно быть настолько вредным, насколько нужно, чтобы выполнять эту работу — потому что единственное, что вы продаете, — это собственное умение внедрить платежный API, а для этого никакой нужды бурно и натянуто радоваться нет.

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

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

Не слушайте снобов


Обязательно кто-нибудь скажет: «Каждый разработчик должен знать X».

Я не знаю X — что бы это ни было. Пузырьковая сортировка? Кажется, это как-то связано со смешиванием темного и светлого пива. B-дерево? Как будто что-то вечнозеленое. Хэш-таблица?.. Я учился кодить на PHP, и прежде чем до меня дошло, что хэш-таблица отличается от массива, прошло два года. Когда я пришел работать в OkCupid, я не видел разницы между хэш-таблицей и массивом. В пафосном офисе OkCupid под неодобрительными взглядами распределителя туалетной бумаги робеют даже боги — но работу я все же получил.



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

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

Если без этого таким ребятам никак — то и ладно. Застань вы времена, когда Google (и даже Vim) еще не существовали, вы бы уцепились за любую возможность поднять самооценку в те мрачные часы, когда выяснялось, что ваша Amiga не помнит даты вашей свадьбы — потому что у вас не было свадьбы и, вероятно, никогда не будет.

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

Собеседование — чушь, смиритесь


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

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

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

Зарабатывайте


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

Там, где вы видите массу дурно пахнущего и небрежного спагетти-кода, который без цели и смысла множит энтропию вселенной, начальники видят черный ящик с надписью «Парень, говорящий с компьютерными богами». Они вкладывают деньги — что-то происходит — и глянь-ка! Появляется продукт, который дает еще больше денег. Можно воображать себя свершением самых горячих мечтаний Теслы и надеяться, что обладаешь хотя бы десятой частью дара предвидения Ады Лавлейс, но это как родиться в Норвегии XI века и отращивать бороду, полагая себя Тором. Но вы не Тор. И даже не воин, а всего лишь поэт — потому и выжили, и можете размножаться.
 
Если у кого-то есть смешанные сексуальные чувства по поводу указателей и уравнений в 3D-графике — ему повезло: он родился в поколении, которое уважает таких, как он… и неявно поклоняется им — довольно жутким образом. Но если вам просто нужна работа и вы можете и хотите согласиться с тем, что компьютеры намного глупее леммингов, то у вас есть все необходимое, чтобы и дальше двигать информационную эпоху.


О переводчике

Перевод статьи выполнен в Alconost.

Alconost занимается локализацией приложений, игр и сайтов на 68 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов, перевод технических текстов.

Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

Подробнее: https://alconost.com

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329954/


Исчезающая граница между корпоративными и личными учетными записями

Четверг, 01 Июня 2017 г. 10:00 + в цитатник
В последние несколько лет можно наблюдать, как постепенно стирается граница между корпоративными и личными учетными записями с точки зрения уровня безопасности и тех потребительских свойств, которые они предлагают, а сами учетные записи становятся все более совместимыми. Посмотрим, как эти две разные сферы применения учетных записей становятся более схожими друг с другом.



Многофакторная ассимиляция


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

  • Биометрические технологии включают в себя сканирование отпечатков пальцев и радужной оболочки глаза, которое реализовано в нативных приложениях для аутентификации в потребительском или корпоративном сегменте. Например, биометрический браслет для двухфакторной аутентификации Nymi носится на руке и использует для аутентификации и доступа к ресурсам характерный для вашего организма ритм сокращений сердца.
  • В качестве наиболее характерного примера аутентификации на основе контекста можно привести тот случай, когда вы устанавливаете флажок «Запомнить меня на этом устройстве», или когда вы используете пароли Verified-By-Visa (VBV) или MasterCard SecureCode (MsSc). При входе в корпоративный или потребительский сервис с ранее не знакомой этой системе связки браузера и устройства пользователю предлагается пройти дополнительную проверку с помощью еще одного фактора аутентификации, например, с помощью одноразового пароля (OTP). В частности, при осуществлении транзакций в электронной коммерции или в электронном банкинге, где используется стандарт 3-D Secure, эта дополнительная проверка осуществляется всякий раз в случае возникновения каких-либо подозрений в отношении транзакции, и тогда пользователей просят указать пароль VBV или McSc.
  • Пуш-аутентификация в один тап позволяет аутентифицировать учетную запись в один тап на мобильном устройстве – подобный метод используется для аутентификации как в сервисах потребительского класса (например, для доступа к электронной почте), так и в сервисах корпоративной аутентификации.



Механизм единого входа в систему на работе и дома


Американский национальный институт стандартов и технология (NIST) подсчитал, что сотрудникам этого института приходится в течение суток проходить аутентификацию в среднем 23 раза. Основным выводом этого исследования стала рекомендация для организаций по возможности внедрять решения для единого входа в систему (single sign on, SSO), что позволит минимизировать «синдром усталости» пользователей от паролей.

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

В корпоративном окружении механизм единого входа реализован с помощью хранилищ паролей (password vaults) или протоколов федерации учетных записей (identity federation protocols), таких как Kerberos, SAML или Open ID Connect. В потребительских сервисах преобладают технологии федеративной проверки подлинности, являющиеся предшественниками механизма единого входа в систему. Тем не менее, потребителям также доступны и хранилища паролей. Например, когда вы кликаете по кнопке «Sign in with Google» для входа в систему с учетной записью Google, протокол Open ID Connect позволяет использовать вашу учетную запись Google для доступа к новому независимому веб-сайту, и таким образом избавляет вас от необходимости создавать новую учетную запись и регистрироваться в системе с новой комбинацией имени пользователя и пароля.

Согласно результатам недавнего исследования Gemalto Authentication and Identity Management Index, 88% лиц, принимающих решения в сфере ИТ, уже внедрили механизм единого входа в систему, либо намерены сделать это в ближайшие два года.

Взаимосовместимость – ключ к созданию универсальной учетной записи


Допустим, завтра – ваш первый день на новой работе. Можете ли вы для доступа к сети, VPN и некоторым облачным приложениям использовать одну из ваших учетных записей от социальных сетей? Если на новой работе внедрен брокер учетных записей, то ответ на этот вопрос будет положительным!

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

Брокер учетных записей (Identity Broker) – это система, которая позволяет реализовать схему аутентификации с использованием уже существующих учетных записей (Bring-Your-Own-Identity, BYOI) и дает пользователям возможность проходить аутентификацию на различных веб-сайтах с применением своей учетной записи. При использовании этого механизма одна учетная запись пользователям может быть ассоциирована с учетными записями от различных источников. Это осуществляется с помощью таких протоколов как SAML 2.0 или Open ID Connect, которые специально созданы для выполнения подобной задачи.

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

Этот вид брокеринга учетных записей позволит сделать нашу нынешнюю учетную запись универсальной.



Фактически, создание универсального онлайн аккаунта – это и есть конечная цель FIDO Alliance. Речь идет об универсальной учетной записи, которая была бы совместима как с потребительскими сервисами, так и с корпоративным окружением. Аббревиатура FIDO, образованная от слов fast identity online, означает общеотраслевую инициативу, направленную на создание универсального форм-фактора для сильной аутентификации, который потребители могли бы использовать для работы с потребительскими и корпоративными сервисами. Развитие FIDO осуществляется усилиями крупных отраслевых игроков, таких как PayPal, Microsoft, Google, ARM, Lenovo, MasterCard, Bank of America, American Express, и этот список можно продолжать. Идея, лежащая в основе FIDO, заключается в том, что технология PKI аутентификации позволит нам использовать один и тот же USB брелок, скан сетчатки глаза, Bluetooth токен аутентификации или мобильное устройство для доступа к банковским счетам, облачным приложениям или для входа в социальные сети.

Чтобы узнать больше о трансформации технологий потребительской и корпоративной безопасности, посмотрите наш вебинар Digital Identities: The Changing Face of Consumer and Enterprise Security Webinar или загрузите доклад IAM Trends and Enterprise Mobility eBook.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329768/


Метки:  

ONTAP 9.2: новый функционал

Четверг, 01 Июня 2017 г. 09:37 + в цитатник
В этой статье хотел бы сделать обзор новшеств, которые появились в версии прошивки ONTAP 9.2. Как обычно NetApp радует большим количеством нового функционала и возможностей, давайте их разберем.

Релизы ONTAP 9.1 и новее теперь будут выходить регулярно каждые 6 месяцев. Ранее релизы оттягивались чтобы вместить невероятно большое число новых фич, теперь их будет меньше в каждом релизе, но они начнут выходить регулярнее и не будут оттягивать выход других фич. Появились релизы с долговременной и коротко временной поддержкой. Поймите правильно, оба релиза полностью production-ready, general avalability, оттестированы, отлажены и работоспособны. Так как на некоторые новые системы появилась возможность покупать поддержку на 7 и более лет, чтобы мочь увеличить срок поддержки релизов ONTAP, было принято компромиссное решение выпускать часть релизов с длительной поддержкой, а часть с короткой, как это происходит, к примеру, в Ubuntu.

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



  • Расширение кластера путём добавления совместимых нод теперь можно выполнять из ГУИ, оттуда же теперь доступен Auto Discovering новых нод
  • automatic switchless-cluster detection — автоматически будет определять состоит кластер из двух или более нод, больше нет необходимости переключать вручную
  • Опция detect-switchless-cluster включается по умолчанию на новых и обновляемых до 9.2 системах
  • OnCommand System Manager Guided Setup (GUI) — В самом начале необходимо подключиться к консоли СХД и задать node-IP адрес, а дальнейшую первоначальную настройку кластера теперь можно выполнить из графического интерфейса
  • Обновлённый Dashboard (начиная с ONTAP 9.1)
  • Export and Import Cluster Configuration for Initial Setup — позволяет выгрузить и загрузить настройки кластера из csv-тимплейта, который можно редактировать в обычном текстовом редакторе или Excel


Расширенные возможности QoS


Balance placement (QoS) — при создании LUN'а система будет предлагать куда его располагать.

QoS minimum, этот функционал ещё называют Throughput Floors (TP), он может работать вместе с функционалом QoS Maximum (throughput ceilings), который был доступен ранее. Throughput Floors позаботиться, чтобы производительность IOPS не упала ниже ранее вами заданной. Кластер должен иметь хотя бы одну AFF ноду чтобы фича работала для протоколов iSCSI/FCP.

Минимум QoS появился в версии 9.2, который задаётся в групповых политиках производительности. То сколько система может выдать с текущей нагрузкой динамически берется из Headroom мониторинга, встроенного в СХД и выбирается из оптимума. Оптимумом называется участок графика нагрузки системы по ИОПС/Латенси, пока он идёт линейно. После линейного начинается участок графа, где при увеличении нагрузки большее число ИОПСов вызывает диспропорциональный, геометрический рост латенси с линейным ростом ИОПС. Таким образом Throughput Floors добивается, чтобы луну был выдан минимум, при необходимости забрав часть производительности с тех лунов, которые ещё не достигли своего минимума. Другими словами, для всех остальных лунов будет установлен «временный или динамический максимум», который будет меньше чем их Throughput Ceilings, но больший чем Throughput Floors, чтобы страдающему луну был выдан его положенный минимум.

Cross Volume Deduplication


Inline Aggregate- Wide Deduplication on SSD (или Cross Volume Deduplication).
Функция включена по умолчанию для всех SSD агрегатов в ONTAP 9.2. Да конечно хотелось, чтобы был «глобал кластер дедуп», но нет предела совершенству и пока это работает только на уровне агрегата, но даже с ним текущие SSD агрегаты ONTAP на столько большие, что они больше, чем целые системы некоторых конкурентов с глобал-дедупом. Поэтому агрегат-дедуп будет давать достаточно для конкурирования с другими AFF системами по эффективности.
Максимальный размер агрегата для AFF систем увеличен до 800ТиБ (ранее был 400)

В версии 9.2 доступна новая команда «storage aggregate show-efficiency» для командной строки, которая может показывать эффект от экономии по каждой отдельной технологии, будь то клоны, компрессия, дедуп и т.д.

Tiering или FabricPool


FabricPool это технология реализована в рамках стратегии DataFabric, которая в свою очередь должна расширить интеграцию всех продуктов NetApp и расширить возможности мобильности данных. Когда NetApp делает новую фичу, он не смотрит на других и не пытается добавить фичу «ради галочки». Вместо этого выпускается технология, которая действительно хорошо продуманная и будет востребована потребителями. Это касается и новой Tiering-фичи FabricPool. С ростом спроса на SSD увеличивается число инсталляций и интереса к этой технологии, поэтому NetApp выпустил функционал FabricPool. FabricPool это технология смещения холодных данных с SSD агрегата (AFF или FAS систем) на холодный объектный уровень — в облако Amazon S3 или на объектную СХД NetApp StorageGRID.
Внедрение FabricPool Data Tiering на Object Storage будет состоять из двух стадий. В 9.2 будет доступна возможность смещать только снепшоты. А следующей стадией будет возможность смещения холодных данных из активной файловой системы вольюма на холодный уровень. Пока с FabricPool не поддерживаются FlexFroup, MetroCluster, ONTAP Select, SnapLock и др. Лицензируется по терабайтно. Добавление лицензии сразу добавляет 10ТБ. Потом можно добавлять по терабайту.

Шифрование вольюмов теперь можно включать из GUI, такой тип шифрования полезен совместно с FabricPool, так как ваши данные могут уехать в какое-нибудь облако.
SnapLock вольюм теперь может быть зашифрован при помощи NetApp Volume Encryption.
FlexGroup теперь также работает с шифрованием NVE (только при создании FG)

Online Certificate Status Protocol (OCSP) — этот функционал используется для приложений, которые применяют TLS шифрование, к примеру, LDAP over TLS.
С 9.2 появилась возможность задать максимальное число попыток неуспешных подключений по SSH, чтобы предотвратить перебор паролей.
iSCSI Endpoint Isolation — позволяет указывать диапазон IP адресов, которым разрешен логин на СХД.

ADP для AFF: Возможность растягивать агрегат, построенный на разделах (RD2) на диски не только в первой полке (или в голове), но и следующей полке (до 48 дисков).
ADP Root-Data Partitioning теперь поддерживается и на гибридных системах: FAS80ХХ/FAS8200/FAS9000, что позволит чуть более рационально использовать диски благодаря возможности обходиться без выделенных дисков для root агрегатов
В boot menu появился новый пункт (Option 9) для работы с разделами (Появилось с ONTAP 9):
  • удалить разбиение дисков на разделы и овнершип;
  • очистить конфигурацию и пере инициализировать все диски с использованием разбиения дисков на разделы;
  • очистить конфигурацию и пере инициализировать все диски с целыми, не разбитыми на разделы дисками.


OnCommand Unified Manager 7.2 теперь в себе включает сразу и OnCommand Performance Manager.

ONTAP Select теперь поддерживает



  • 2-Node HA для ROBO заказчиков
  • ONTAP Select теперь поддерживает FlexGroup
  • vNAS — внешнее хранилище для пользователей vSAN, у них естественно нет промышленного СХД и которым не хватает NASа.
  • inline Dedup для all-falsh ONTAP Select


Обновление по аппаратной платформа FAS и All Flash FAS (AFF)


  • Поддержка дисковых полок DS460C в Metro Cluster — только полностью забитые полки доступны. Требует 9.2
  • Возможность апгрейда 2620 с одно-нодовой конфигурации в двух-нодовую
  • Возможность превращения 2620 в полку DS122C и 2650 в полку DS224C
  • Для Метро Кластара на базе 8200/9000/А300/А700 появиться гибридные SSD полки где используются 18 SSD дисков большего объёма и 6 маленьких SSD для root разделов (чтобы не тратить большие диски для рут-разделов).
  • Теперь 2620 поддерживают до 132 дисков (ранее 120)
  • Метрокластер c ONTAP 9.2 поддерживает теперь до 8 ISL линков.


Сообщения по ошибкам в тексте прошу направлять в ЛС. Замечания, дополнения и вопросы по статье напротив, прошу в комментарии.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/328444/


Метки:  

Наука о нейронных сетях. Прямой эфир

Четверг, 01 Июня 2017 г. 09:36 + в цитатник
До конца года остаётся 213 дней, так что самое время начать изучать что-то новое, например, погрузиться в науку о нейронных сетях. Сегодня за один день мы познакомимся с устройством нейросетей в прямом эфире, начиная с простых архитектур и заканчивая глубоким обучением — сетями, в которых десятки и сотни слоев. Также рассмотрим сверточные сети, применяемые для распознавания изображений, и рекуррентные сети для анализа последовательностей. Причем вы сможете вместе с нами обучить нейронную сеть для решения нетривиальных задач — от распознавания рукописных цифр до узнавания котиков на фотографиях.



Прямая трансляция


Это прямая трансляция интенсива «Практическое введение в нейронные сети и глубокое обучение», который проходит в рамках «DevCon School: Технологии будущего». Она будет интересна для разработчиков, которые ранее не работали с нейронными сетями, или работали совсем немного, и хотят понять, как использовать нейросети и нейросетевые фреймворки для решения таких задач, как распознавание изображений и анализ последовательностей.





Для обучения нейросетей мы будем использовать: Azure Notebooks, Microsoft Cognitive Toolkit (CNTK), виртуальные машины с графическими ускорителями GPU.

Требования к ПО


Для участия понадобится свой ноутбук (под управлением Windows или Mac OS X), на котором установлены:
  • Современный браузер (Microsoft Edge, Internet Explorer, Safari).
  • Средство подключения к удаленному рабочему столу Windows (Remote Desktop), способное подключаться к виртуальным машинам в Microsoft Azure (для Mac OS).
  • Основная часть интенсива будет проходить в браузере с использованием Azure Notebooks или в удаленной виртуальной машине в облаке Microsoft Azure.
  • Чтобы избежать проблем, попробуйте заранее открыть какие-нибудь из Azure Notebooks отсюда.
  • Также понадобится Microsoft Account – если у вас его нет, создайте себе новый почтовый ящик на Outlook.com.
  • Мы также рекомендуем заранее создать новый почтовый ящик для экспериментов, если у вас нет подписки Microsoft Azure, и вы планируете использовать триальную подписку, которую мы предоставим на мероприятии.

Спикеры


  • Дмитрий Сошников, Эксперт по стратегическим технологиям, Microsoft
  • Михаил Бурцев, Заведующий лабораторией нейронных систем, МФТИ
  • Михаил Козлов, Руководитель отдела разработки, ГК ПИК
  • Андрей Устюжанин, Заведующий лабораторией факультета компьютерных наук, НИУ ВШЭ

Программа


10:00 — 11:00 Открытие мероприятия, пленарный доклад
11:00 — 11:30 Перерыв
11:30 — 13:00 Практическое введение в нейронные сети и глубокое обучение. Часть 1
13:30 — 14:30 Перерыв
14:30 — 16:30 Практическое введение в нейронные сети и глубокое обучение. Часть 2
16:30 — 17:00 Перерыв
17:00 — 19:00 Практическое введение в нейронные сети и глубокое обучение. Часть 3
19:00 — 19:30 Закрытие мероприятия

Полезные ссылки


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

Также, мы будем проводить live-трансляции в сообществах Microsoft Developer: VK и Facebook.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329922/


Метки:  

Самые интересные доклады с конференции Analyst Days 2017

Четверг, 01 Июня 2017 г. 09:31 + в цитатник
В апреле наши коллеги побывали на международной конференции по системному и бизнес-анализу Analyst Days 2017, проходившей в Москве. Под катом — впечатления от самых интересных, на наш взгляд, докладов этой конференции.


Тематический блок «Качество требований»


Елена Горопека, «Тестирование требований. Находим проблемы до их появления»

В своём кратком докладе Елена рассказала о том, кем и каким образом может проводиться тестирование требований. Все знают, что чем раньше в ходе проектировании ПО была выявлена ошибка, тем дешевле она обходится. Елена советует обращаться за помощью к старшим аналитикам, что может способствовать установлению процесса тестирования требований на постоянной основе, а также росту профессионализма сотрудников. Экспертиза может проводится тестировщиком проекта с помощью разработки тест-кейсов без доступа к тестовому окружению. То есть по сути он не делает двойную работу, а сразу составляет рабочие тест-кейсы. Загрузка бизнес-аналитика меняется нелинейно, и можно попробовать привлечь к тестированию требований коллегу из соседнего отдела/проекта.

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

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

Таисия Толстунова, «As large as life. Полнота требований и способы ее проверки»

Таисия начала свой доклад с описания того, что мы имеем ввиду под «полнотой требований», как мы её определяем. Мы можем рассматривать это понятие с точки зрения классиков, таких каr Вигерс и Коберн, использовать определения Babok и SWEBOK, и так далее. Неполнота требований приводит к потере качества, времени работы всей команды и профессиональной самооценки. А значит стоит постараться избежать этих последствий. Докладчик предложила использовать следующие техники:

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

Тематический блок «Повышение эффективности, специализированные навыки»


Ольга Самарина, «Дизайн-мышление. Что это и могут ли аналитики его применять?»

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



Наше видение того, как пользователи будут использовать предоставленные им средства, может отличаться от реальности. При сборе информации о проблеме стоит понаблюдать за их работой. Смотреть, что они НЕ делают, и слушать, что они НЕ говорят. Если речь идёт об усовершенствовании рабочего продукта, то нам очень важно мнение пользователей, которые не любят наш продукт и редко им пользуются, или тех, которые перестали им пользоваться. Именно эти люди зачастую бывают источником новой и неожиданной информации. После сбора сведений о существующем решении, нужно сфокусироваться на конкретных проблемах. Затем провести мозговой штурм, по результатам которого выбрать конкретную идею. На следующем этапе проводится прототипирование и тестирование гипотез. А уже затем — их проверка и тестовый запуск.



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



Ещё в этом блоке был очень интересный мастер-класс.

Сбор требований и описание видения решения (сокращенная версия)

После теоретической части мы разбились на команды, чтобы придумать продукт и описать его целевую аудиторию (с созданием персонажа).



Нам нужно было выделить основные потребности наших клиентов — NEEDS. Это краткое описание текущего состояния имеющихся у клиента потребностей. В качестве примера можно привести потребности в коммуникации, формировании финансовой отчетности, продаже билетов и так далее. Приятные дополнения — WANTS, это то, что не решает основную проблему пользователя, но может быть удобным, полезным, радовать его. После того, как мы определились с первыми двумя пунктами, надо было определить, что именно мы будем реализовывать — JOBS TO DO. И сразу разбить их на три группы: функциональные, эмоциональные и социальные. Мы учитывали также, что нужно будет сделать кроме основного функционала: нужно ли готовить документацию, проводить сертификацию, обучение персонала и так далее. И для каждой конкретной задачи нужно было прописать критерий приёмки, критерий качества, ожидаемый результат, риски, связанные с её реализацией. Это было интересное творческое задание, в ходе которого небольшая группа незнакомых друг с другом аналитиков смогла договориться и найти ответы на все эти вопросы.



Тематический блок «Коммуникации»


Очень запомнилась лекция Сергея Крупенина «PM vs BA vs World. Как ведут себя люди, которым вы ставите задачи + Управленческие поединки. Суровая практика». Кстати, по итогам голосования именно Сергей был выбран лучшим докладчиком конференции.

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



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



Определить, какую реакцию проявляет человек на требования руководителя, поможет эта таблица. Рассмотрим пример с определением порядка. Руководитель принял решение о том, что команда будет работать по SCRUM с двухнедельными итерациями. А один из подчинённых начинает рассказывать о том, что KANBAN лучше, и стоило выбрать его. Можно определить реакцию сотрудника как «перехватывающий управление».



Руководителю стоит внимательно наблюдать за реакциями подчиненного в разных ситуациях. Наиболее частая реакция — это и есть его характер. В зависимости от этого стоит скорректировать своё поведение с ним, чтобы стремиться привести его к лояльным реакциям.

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329932/


Метки:  

[Перевод] GitHub переходит на GraphQL

Четверг, 01 Июня 2017 г. 08:28 + в цитатник

22 мая компания GitHub объявила, что следующая версия их API будет использовать разработанную Facebook технологию под названием GraphQL.


В итоге GraphQL может прийти на смену самому популярному на сегодняшний день типу API — REST API.


В документации к новой версии API GitHub говорится:


«В 4 версии API GitHub движется к GraphQL, поскольку эта технология обеспечивает гораздо большую гибкость для интеграторов. Возможность точно определить необходимые вам данные (и только те, которые необходимы) — это большое преимущество по сравнению с REST API v3».

«GraphQL позволяет переосмыслить создание и использование API. Вместо выполнения нескольких REST-запросов для получения интересующих данных вы в большинстве случаев можете сделать лишь один вызов».

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


Что почитать о GraphQL:


  • Статья, которую написал разработчик GitHub Дэвид Селис (David Celis): “Give it a REST: use GraphQL for your APIs” (5 минут на чтение)
  • Статья с уклоном в JavaScript: “So what’s this GraphQL thing I keep hearing about?” (12 минут на чтение)

Ссылки:


  1. Оригинал: The steady rise of GraphQL.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329944/


Метки:  

[recovery mode] Психология тестирования (конечно же, не исчерпывающая). Личный перевод из книги «Искусство тестирования» Г. Майерса

Четверг, 01 Июня 2017 г. 08:18 + в цитатник
Важная причина плохого тестирования программных продуктов заключается в том, что большинство специалистов отталкивается от ложного определения этого термина. Они могут сказать:
— тестирование – это процесс для демонстрации того, что в программе нет ошибок;
— цель тестирования в том, чтобы показать, что программа выполняет ожидаемые от нее действия корректным образом;
— тестирование – это процесс, направленный на создание уверенности, что программа делает то, что должна.
Эти определения неверны.

Вот вам дедуктивное умозаключение:
Вписываясь в тестирование, мы желаем добавить продукту значимость (ценность) –
Добавление ценности продукту происходит за счет увеличения качества и надежности продукта –
Добавление надежности продукта происходит путем поиска и удаления ошибок.
Поэтому не занимайтесь тестированием. Не занимайтесь тестированием для того, чтобы показать, что все работает; начните с аксиомы – программа содержит ошибки (кстати, это верно для большинства программ), и далее тестируйте так, чтобы найти их столько, сколько это вообще возможно, будто это Ваш последний день (в тестировании).
А вот определение получше:
Тестирование – процесс работы с программой со стойким намерением найти ошибки.
И хотя это может звучать, как некая игра тонких семантический материй, здесь есть действительно важная составляющая. Понимание истинного (они правда сказали это слово? – прим. переводчика) определения процесса тестирования может глубоким образом повлиять на успех в Ваших усилиях.
Люди – существа, для которых важна ориентация на определенные цели, и установка таковых имеет важное психологическое значение. Если наша цель – показать, что продукт не имеет ошибок, мы будет неосознанно стремится к этой цели; отсюда, наши действия будут такими, которые будут снижать вероятность возникновения сбоев. На другой руке (я же правильно перевел? – прим. меня), если Ваша цель – продемонстрировать, что программа содержит ошибки, Ваши тесты будут более успешны в поиске последних. Такой подход добавит большей ценности продукту, нежели предыдущий.
Такое определение включает в себя множество аспектов. Например, оно подразумевает некую разрушительную, садистскую природу тестирования. Что может противоречить нашим жизненным взглядам: ведь большинство из нас любят больше создавать, нежели разрушать. Большинство людей склонны к созданию объектов, но не к их разрушению. Такое определение также включает в себя установку для тест-дизайна и установку на то, кому бы следовало заниматься тестированием, а кому — нет.
Другим способом ухватить определение тестирования должным образом выступает анализ использования слов «успешный» и «безуспешный» — в частности, их применение к результатам прохождения тестовый случаев. Большинство управленцев воспринимают тесты, которые не выявили ошибок, как «успешно пройденные», а те, которые обнаруживают ошибки обычно называются «безуспешными».
И снова это перевертыш. «Безуспешны» обозначает нечто нежеланное или разочаровывающее. Согласно нашему представлению, тест с хорошим дизайном, хорошо выполненный, является успешным, если он помог найти ошибку, которая может быть исправлена. Этот же тест мы также называем успешным, если в конечном итоге он сообщает, что ошибок, которые можно найти, ни осталось. Единственный случай, когда тест можно назвать безуспешным, — если он не может должным образом исследовать Систему. И в большинстве случаев, вероятно, так и происходит, поскольку концепция ПО без ошибок принципиально нереалистична.
Как можно назвать тест, который нашел новую ошибку, безуспешным? Ведь он предоставил инвестиции в ценность продукта. А вот тест, который выполняет программу с корректными результатами без найденных ошибок – можно назвать безуспешным.
Рассмотрим аналогию с визитом к врачу по причине общего недомогания. Если доктор начнет делать какие-либо лабораторные исследования, которые не обнаружат проблему, мы не назовем их успешными; они неудачны, поскольку кошелек пациента, а он все еще болен. Возникают вопросы по поводу квалификации врача. И наоборот, тесты успешны, если они диагностировали язву, и врач может начать лечение. Похоже в медицинской профессии эти слова используются в правильном русле. Аналогия в том, что нам следует воспринимать программный продукт, как если бы он был больным пациентом.
Еще одна проблема с определение тестирования, как «процесса демонстрации того, что ошибок в программе нет» в том, что эта цель недостижима практически для всех, даже простеньких программ.
Повторим, результаты психологических исследований говорят, что человек малоэффективен, когда его установка на решение задачи содержит предусловия нецелесообразности или невозможности. К примеру, если у Вас есть задание решить сложную головоломку за 15 минут, Ваш успех через десять минут будет небольшим, поскольку Вы, если Вы похожи на большинство людей, уже скоро сделаете вывод, что выполнить поставленное задание невозможно. Если же решение нужно в течение четырех часов, мы можем ожидать, что успехов в первые десять минут будет больше. Если рассматривать процесс тестирования как процесс выявления наличествующих ошибок, это выполнимая задача, что позволяет справится с указанной психологической проблемой.
Проблема с определением тестирования как «процесса демонстрации того, что программа делает то, что должна» в том, что программа, выполняющая это условие, все еще содержит ошибки. Другими словами, ошибка есть в программе, которая не делает то, что должна – это очевидно. Но ошибки присутствуют и в программе, которая делает то, что не должна делать. Мы, вероятно, добьемся большего успеха, рассматривая процесс тестирования, как процесс поиска ошибок, нежели как процесс, целью которого является показ, что программа делает то, что должна.
Заключая, правильно рассматривать тестирование ПО как разрушительный процесс, состоящий из попыток найти ошибки, наличие которых предполагается. Удача в том, чтобы привести приложение к сбою, а «синий экран смерти» – высшая точка. Да, мы хотим добиться в процессе тестирования установки определенной степени доверия, что программа делает то, для чего она была создана и не делает ничего другого. Ошибки же могут стать отличным проводником к этой цели.
Представьте, что некто утверждает, что его программа идеальна, то есть не содержит ошибок. Самый лучший способ проверить правдивость этого утверждения – попытаться это опровергнуть. Другими словами, следует попытаться найти недостатки с большим желанием, нежели согласится, что программа работает корректно для определенного набора данных.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329966/


Метки:  

[Перевод - recovery mode ] Identity-as-a-Service (IDaaS). Что это?

Четверг, 01 Июня 2017 г. 06:59 + в цитатник


Мы уже знакомы с многими терминами в мире облачных технологий, таких как «Платформа как сервис» (PaaS), «Программное обеспечение как сервис» (SaaS ), «Инфраструктура как сервис» (IaaS). Последним, присоединившимся к этому списку, стало словосочетание «Идентификация как сервис» (IDaaS).

Во-первых, зачем нам IDaaS? Все больше компаний связывают свое развитие с облачными технологиями, поэтому им необходимо найти баланс между идентификацией в облаке и локально, не говоря уж о том, как этим управлять. Эту проблему призван решить IDaas.

В дополнение IDaaS может положительно сказаться на уменьшении стоимости IAM (Решений по управлению доступом) решений. И это еще не все. IAM повсеместно сталкиваются со сложностями, как с точки зрения бизнеса, так и технологически. Для примера, концепция Bring Your Own Device (BYOD) наступает по всему миру. Согласно этой концепции пользователи могут попадать в сеть предприятия по всему миру с любого персонального устройства, как то ноутбук, планшет или смартфон. Очевидно, это вызывает много споров о безопасности и управлению доступом.

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

В мире уже известны несколько публичных инцидентов, которые повлекли за собой убытки в десятки и сотни тысяч долларов, а так же большие репутационные потери. Как пример, можно привести случай с Dropbox, сотрудник которого использовал пароль для входа во внутреннюю систему компании, с которым ранее входил в LinkedIN. Пароль от учетной записи был получен злоумышленниками и использован для входа в систему Dropbox. По оценкам, они завладели более чем 68-ми миллионами учетных записей сотрудников и, все они были проданы на черном рынке. Так, в 2016 году выяснилось, что все эти аккаунты Dropbox были выложены в интернет.

Этот случай показывает, как управление идентификацией учетных данных сотрудника могут защитить активы компании от взлома. Так, с 2012 года облачные технологии растут значительными темпами, тем самым, выводя на передний план защиту и управление учетными данными.

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

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

Любопытно понаблюдать за развитием платформ IDaaS в ближайшие несколько лет. Этот тренд только зарождается.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329964/


Метки:  

[Перевод] Доклад Мари Микер с Code Conference: главное

Среда, 31 Мая 2017 г. 23:58 + в цитатник
image
Источник фото: Recode.net

Партнер венчурной компании Kleiner Perkins Caufield & Byers Мари Микер поделилась своим супер-отчетом на Code Conference в Калифорнии.

Сайт Recode.net (организаторы конференции) подготовил быстрый обзор одного из самых ожидаемых докладов Силиконовой Долины. Отчет этого года включил 355 слайдов и тонны информации, включая новую секцию о здравоохранении, которую Мари, впрочем, не презентовала вживую.


Несколько опорных точек отчета:



  • Глобальное развитие смартфонов замедляется: поставки смартфонов выросли на 3% по сравнению с прошлым годом — в прошлом году этот процент составил 10%. Кроме того, продолжает замедление роста интернета в целом, о чем Микер говорила еще в прошлом году.
  • Голос заменяет печатный ввод в онлайн-запросах. С помощью голоса было сделано 20% мобильных запросов в 2016, в то время как их точность на данный момент составляет 95%.
  • За 10 лет доля Netflix в общей выручки индустрии домашних развлечений в США поднялась с 0 до 30%. В то же время ТВ-аудитория продолжает сокращаться.
  • Микер отмечает, что предприниматели часто оказываются геймерами и цитирует Илона Маска, Рейда Хоффмана и Марка Цукерберга. Международный интерактивный гейминг становится мейнстримом — в 2017 году насчитывается уже 2,6 миллиарда геймеров по сравнению со 100 миллионами в 1995 году. Выручка индустрии в целом оценивается в 100 миллиардов долларов за 2016 год. Китай (ожидаемо) — главный рынок для интерактивного гейминга.
  • Китай остается самым интересным рынком с огромными темпами роста сферы мобильных услуг, платежей и таких услуг как байк-шэринг по запросу.
  • В то время как рост интернета замедляется по всему миру, Индию c ее наиболее быстрорастущей экономикой эти процессы вообще не касаются. Количество интернет-пользователей вырос более чем на 28% за 2016 год — и это только 27% общего онлайн-проникновения, что означает огромный простор для роста интернет-аудитории. Также растет и мобильный интернет, поскольку стоимость широкополосного соединения снижается.
  • В 2016 году в США 60% наиболее высоко оцениваемых компании на рынке высоких технологий были основаны американцами в первом или втором поколении. В этих компаниях трудоустроено более чем 1,5 миллионов сотрудников. Эти компании включают таких гигантов как Apple, Alphabet, Amazon and Facebook.
  • Здравоохранение: носимые гаджеты постепенно втираются в доверие — сейчас уже 25% американцев приобрели хотя бы один девайс (по сравнению с 12% в 2016 году). Ведущие высокотехнологичные бренды уже зарекомендовали себя на диджитал-рынке здравоохранения, и более 60% потребителей готовы делиться данными о своем здоровье c определенными компаниями вроде Google и Microsoft.


Читайте отчет целиком (на английском) и смотрите видео с выступления Микер по ссылке.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329960/


Метки:  

Решение проблем организации бизнес-логики в PHP или как пойти своим путем

Среда, 31 Мая 2017 г. 23:51 + в цитатник
image
Привет, хабр!
Не первый раз я пытаюсь написать эту статью, но давно уже есть желание поделиться опытом и люди просят.
На хабре много статей о различных технологиях, языках, api и т.д., но часто программисты в пылу разработки забывают для чего все это, ниже я постараюсь описать, как не забыть о самом главном при разработке.
Статья будет о том как мы организовали работу с бизнес логикой в PHP, совмещающую разные подходы.
Тут будет изложено как уйти от проблем PHP фреймворков, связанных с размазыванием предметной логики по слою контроллеров.

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



Немного о том как работать с бизнес логикой в популярных PHP фреймворках



Обычная ситуация


Если мы смотрим на самые популярные фреймворки то за основу в них взят архитектурный паттерн MVC. Инструментов по организации бизнес логики как таковых нет, а вот для создания простых crud все есть.
Стандартная ситуация которую мы видим в большинстве случаев это анемичная модель, когда например класс UserModel является просто набором атрибутов и не содержит никакой логики. Бизнес логика же содержится в слое контроллеров.
Контроллеры превращаются в что-то среднее между Transaction Script и Service Layer в Domain Model. Они валидируют входные данные, получают из базы модельные сущности и реализуют бизнес логику этих сущностей.
Я не говорю, что это неправильно, в некоторых случаях это оправдывающий себя подход.
Когда стоит разрабатывать без какой-то сложной архитектуры для бизнес логики:
  1. При простой бизнес логике
  2. Для создания mvp
  3. При создании прототипов

Если у вас не такая ситуация то стоит задуматься об архитектуре и о месте бизнес логики в этой архитектуре.

Сложная бизнес логика


Если бизнес логика достаточно сложна то есть два стандартных варианта решения:

Transaction Script


Чтобы отделить бизнес логику от фреймворка стоит выделать ее в отдельные сущности. Используя Transaction Script мы можем создать большой набор сценариев, обрабатывающих конкретные запросы пользователей.
Например если нужно загрузить фото то можно создать сценарий загрузки фото. Программно он может быть выделен в отдельный класс
PhotoUploadScript
class PhotoUploadScript
{
public function run()
{
/*реализация сценария загрузки фото*/
}
}

Подробнее советую почитать об этом подходе в книге «Архитектура корпоративных программных приложений», там описаны все его плюсы и минусы.

Domain Model


При реализации Domain Model все становится значительно сложнее. Надо продумать бизнес логику и выделить сущности с четко разделенной ответственностью. Тут много подводных камней, это и как организовать фасад для предметной области и как избежать создания приложения с клубком связей между бизнес сущностями и т.д…
В книге «Архитектура корпоративных программных приложений» предлагается ввести слой Service Layer который послужит интерфейсом бизнес логики и будет состоять из нескольких сервисов сгруппированных по общему функционалу(например UserService, OrderService и т.д.).
Более подробной этот подход рассмотрен в книгах «Архитектура корпоративных программных приложений» и также ему посвящена целая книга «Предметно-ориентированное проектирование (DDD)», которую я лично очень рекомендую к прочтению.

Наша история


Как все начиналось.



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

Архитектура, словарь.


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

Что-то бралось из “Большой синей книги” по DDD, что-то из книги «Архитектура корпоративных программных приложений» и все это перерабатывались, если это было необходимо, под наши нужды.

Interface


Interface это в нашем случае слой отвечающий за доступ к предметной области из внешнего мира.
У нас на данный момент есть 2 вида интерфейса:
API — это RESTful api состоящий из View и Controller.
CLI — интерфейс вызова бизнес логики из командной строки(например крон задачи, воркеры для очередей, и т.д.).

View

Данная часть слоя Interface очень проста, так как наши проекты на PHP это исключительно API и не имеют пользовательского интерфейса.
Соответственно не было необходимости включать работу с шаблонизаторами, мы просто отдаем view в виде json.
При необходимости этот функционал можно расширить, добавить поддержку шаблонизаторов, ввести разные форматы отдачи ответа (например xml ), но у нас таких потребностей пока нет. Данное упрощение позволило больше времени уделять более важным частям архитектуры.

Controller

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

Model


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

Entity — это сущность с набором характеристик в виде списка параметров и с поведением в виде функций.
Context — это сценарий в рамках которого взаимодействуют сущности.
Repository — это абстракция для хранения Entity.

Storage


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

Подробно теория



View-Controller


Эта часть платформы организует API интерфейс для бизнес логики из вне. Она состоит из множества элементов, но для понимания можно описать несколько:
Router — маршрутизатор http запросов в соответствующий метод контроллера (все стандартно).
View — это по сути преобразователь ответов от модели передаваемых как ValueObjet ( тут мы тоже, не даем view много знаний о бизнес логики) в json. Хотя в классическом MVC view получает обновления от model напрямую, у нас это делается через Controller.
Controller это прослойка скрывающая интерфейсы модели. Controller преобразует http запрос в входные параметры для модели, вызывает сценарий модели, получает результат выполнения и возвращает его View для отображения.
Это часть не содержит никакой бизнес логики и в течении проекта не меняется если только не нужно создать новые API интерфейсы. Мы не раздуваем слой контроллеров, оставляем их компактными и простыми.

Модель


А теперь поговорим о самом главном и ценном элементе, заключающем в себя бизнес логику.
Рассмотрим подробнее основные элементы модели: Entity, Context и Repository.

Entity
Абстрактный класс Entity
abstract class Entity
{
  protected $_privateGetList = [];
  protected $_privateSetList = [ 'ctime', 'utime'];

  protected $id = 0;
  protected $ctime;
  protected $utime;

  public function getId()
  {
    return $this->id;
  }

  public function setId( $id)
  {
    $this->id = $this->id == 0? $id: $this->id;
  }

  public function getCtime()
  {
    return $this->ctime;
  }

  public function getUtime()
  {
    return $this->utime;
  }

  public function __call( $name, $arguments)
  {
    if( strpos( $name, "get" ) === 0)
    {
      $attrName = substr( $name, 3);
      $attrName = preg_replace_callback( "/(^[A-Z])/", create_function( '$matches', 'return strtolower($matches[0]);'), $attrName);
      $attrName = preg_replace_callback( "/([A-Z])/", create_function( '$matches', 'return '_'.strtolower($matches[0]);'), $attrName);
      if( !in_array( $attrName, $this->_privateGetList))
        return $this->$attrName;
    }

    if( strpos( $name, "set" ) === 0)
    {
      $attrName = substr( $name, 3);
      $attrName = preg_replace_callback( "/(^[A-Z])/", create_function( '$matches', 'return strtolower($matches[0]);'), $attrName);
      $attrName = preg_replace_callback( "/([A-Z])/", create_function( '$matches', 'return '_'.strtolower($matches[0]);'), $attrName);
      if( !in_array( $attrName, $this->_privateSetList))
        $this->$attrName = $arguments[0];
    }
  }

  public function get( $name)
  {
    if( !in_array( $name, $this->_privateGetList))
      return $this->$name;
  }

  public function set( $name, $value)
  {
    if( !in_array( $name, $this->_privateSetList))
      $this->$name = $value;
  }
  static public function name()
  {
    return get_called_class();
  }
} 



Entity это сущности предметной области, например пользователь, заказ, автомобиль и т.д. Все подобные сущности могут иметь параметры: идентификатор, время регистрации, цена, скорость. Работу с параметрами мы обеспечиваем в базовом классе Entity, а поведение уже определяет разработчик в классах наследниках.
Список параметров так же нужен для сохранения Entity в базу данных, но модель ничего об этом сохранении не знает. В инфраструктурном уровне есть мапперы которые знают как сохранять сущности модели в базу.
Идентификатор у Entity в нашей платформе это базовый параметр, он позволяет однозначно идентифицировать разные сущности внутри одно класса объектов.
Подробнее можно сказать что наш Entity очень похож на Entity, который описан в книге Эрика Эванса.
Как говорится у Эванса, идентификация объекта а программных системах это одна из важнейших задач. Так же Эванс уточняет что идентификация достигается не только за счет одних атрибутов объектов.
Что же можно считать характеристиками которые могут идентифицировать объект в программной системе: атрибуты, класс объекта, поведение. При разработке нашего Entity мы как раз отталкивались от этих характеристик.
Атрибуты могут быть разные в зависимости от сущности, но идентификатор мы выделили в базой как присущий практически всем. Класс объекта мы задаем благодаря ООП и наследованию предоставляемому нам языком разработки. Поведение задается методами для каждого класса.

Context
Абстрактный класс Context

abstract class Context
{
  protected $_property_list = null;

  function __construct( \foci\utils\PropertyList $property_list)
  {
    $this->_property_list = $property_list;
  }

  abstract public function execute();

  static public function name()
  {
    return get_called_class();
  }
}


Context это сценарий в рамках которого взаимодействуют Entity. Например «Регистрация пользователя» у нас отдельный контекст, и работа этого контекста выглядит примерно так:
  1. Запускаем контекст и передаем ему параметры для регистрации. На вход контекст получает список простых параметров (int, string, text и т.д.).
  2. Проходит валидация корректности параметров. Валидация тут именно для предметной области, мы не проверяем тут запросы http.
  3. Создание пользователя.
  4. Сохранение пользователя. Это тоже часть предметной области, главное, что она абстрагирована от того куда и как мы этого пользователя сохраняем. Тут для абстракции сохранения мы используем Репозитории.
  5. Отправка на почту уведомления.
  6. Возврат результатов выполнения контекста. Для возврата результата есть специальный класс ContextResult который содержит признак успешности выполнения контекста и либо данные с результатами, либо список ошибок. (на уровне view-controller модельные ошибки переводятся в ошибки http)

Context практически в чистом виде Transaction Script, но с некоторыми исключениями. Фаулер приводит пример реализации бизнес логики через Transaction Script либо Domain Model. При использовании Domain Model он рекомендует использовать Service Layer в котором сервисы создаются на основе общности функционала (например UserService, MoneyService, и т.д.). В нашем случае Transaction Script может выступать тем же Service Layer если не делать модельные сущности анемичными.
Например набор контекстов связанных с пользователем (UserRegContext, UserGetContext, UserChangePasswordContext, и т.д.) при не аннемичном пользователе практически равноценен UserService (Service Layer). У нас есть контексты которые берут на себя очень много бизнес логики и их можно считать Transaction Script, но есть и контексты которые просто вызывают какой-то функционал Entity а дальше уже вся бизнес логика скрыта от контекста и тут они уже ближе к Service Layer.
Отсюда в случаях со сложной бизнес логикой можно либо в чистом виде сделать DDD архитектуру системы, либо можно организовать логику через Transaction Script если бизнес логика не так сложна и состоит из стандартных сценариев создать, запросить, обновить и т.д.

Repository
Обобщенный класс репозитория
class Repository
{
  function add( \foci\model\Entity &$entity)
  {
    $result =  $this->_mapper->insert( $entity);
    return $result;
  }

  function update( \foci\model\Entity &$entity)
  {
    $result =  $this->_mapper->update( $entity);
    return $result;
  }

  function delete( \foci\model\Entity &$entity)
  {
    $result =  $this->_mapper->deleteById( $entity->getId());
    return $result;
  }
}


Репозитории это абстракиция бизнес логики для организация сохранения/удаления/обновления/поиска сущностей в базе.
Конкретные репозитории работают с конкретными сущностями, например UserRepository работает с User.

Хранение данных


Хранение данных сделано с использованием мапперов. Есть обобщенный класс Mapper который содержит базовый функционал для работы с Entity.
Обобщенный класс Mapper
abstract class Mapper
{
protected $_connection;
protected $_table;

function __construct( Connection $connection)
{
$this->_connection = $connection;
}

abstract protected function _createEntityFromRow( $row);

abstract public function insert( \foci\model\Entity &$entity);
abstract public function update( \foci\model\Entity &$entity);
abstract public function delete( \foci\model\Entity &$entity);

public function getTableName()
{
return $this->_table;
}
}

Для конкретных сущностей создаются свои конкретные мапперы которые знают как данную сущность сохранять в базу, как ее загружать из базы, как удалять(хотя на самом деле удалять из базы что-то это плохая практика, поэтому в большинстве случаев мы просто помечаем удаленным) и как изменять.
Таким образом если у нас в модели есть класс User то ему в соответствие создается класс UserMapper. Логика работы с БД вынесена в отдельны слой и может быть легко заменена при необходимости.
Модельные сущности ничего не знаю о мапперах, мапперы же наоборот все знают о своих модельных сущностях.

Обобщенная схема


Большая картинка
image

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

Немного практики (совсем чуть чуть)


Теория это хорошо, но давайте рассмотрим, как все это применить на практике.
Допустим у нас есть задача сделать приложение для персонального учета финансов.
Примерный словарь терминов (расписывать определения не буду, тут пока все просто): Деньги, Бюджет, Пользователь, Товар, Услуга, Календарь

Далее составим пару сценариев пользователя, возьмем что-то нестандартное, для большей наглядности.
Покупка товара — будем считать что покупка для нас это просто факт однократного списания денег.
Установка оплаты услуги по календарю — это будет регулярное списания денег с описанием.

Выделим сущности: Money, Budget, User, Product, Service, Calendar.
Выделим 3 контекста по пользовательским сценариям:

Первый контекст это просто покупка товара.

BuyOrderContex


  1. Получаем User из базы по входным данным(например по токену)
  2. Получаем или создаем новый Product
  3. Говорим Budget установить покупку Product за указанную сумму Money

Дальше все сложнее, второй пользовательский сценарий разделился на 2 контекста, в первом мы устанавливаем когда списывать деньги, а во втором делаем само списание.

SetSchedulePayForServiceContext


  1. Получаем User из базы по входным данным(например по токену)
  2. Получаем или создаем новый Service
  3. Устанавливаем в Calendar списание денег на услугу Service по заданной дате

SchedulePayForServiceContext


  1. Смотрим в Calendar есть ли на текущее время списание за Service
  2. Загружаем Service за которой надо списать деньги
  3. Списываем деньги за Service


Уже в этом небольшом примере видны и какие-то плюсы данного подхода и минусы(например дублирование логики в разных контекстах, об этом хорошо написано в книге «Архитектура корпоративных программных приложений»).

Заключение


Наши практики


Разделение функционала


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

Контекст вызывает контекст


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

Крон задачи


Контекст как единица выполнения позволяет вызывать его откуда угодно. На этом основана логика запуска контекстов как крон задач.

SPA


Один из наших проектов это сайт в котором клиентская часть полностью написана на JavaScript и через RESTfull api взаимодействует с серверной часть на PHP. Мы такое даже не планировали когда начинали разработку, но эта возможность строить SPA приложения с нашей платформой в качестве сервера оказалась очень удобной.

Тестирование


Весь код покрывается тестами. Мы используем 2 вида тестов:
  1. Unit тесты, например для таких классов как Config
  2. Acceptnce тесты, для запросов к нашему api.


Планы


  1. Нам очень сильно не хватает более широко распространения нашей разработки. Все написано исключительно для внутреннего использования и это накладывает свои минусы.
  2. Не хватает обкатки в высоконагруженных проектах. У нас уже несколько работающих коммерческих проектов, но высоконагруженными их назвать нельзя.
  3. Логика работы с транзакция пока что у нас сильно не продуманна. В этом месте у нас на данные момент есть небольшое нарушение инкапсуляции модели. В будущем планируется ввести Unit Of Work для абстрагирования от транзакций баз данных
  4. Тестирование главным образом покрывает api, в планах сделать тестирование контекстов. Так появится возможность изолированно тестировать предметную область.


Что мы получили в итоге


  1. Гибкую платформу для создания приложения с четким отделением бизнес логики от инфраструктуры.
  2. Полностью подконтрольную нам разработку и это дает много плюсов в решении технических задач спорных моментов.
  3. Архитектуру основанную на всем известных шаблонах проектирования, позволяющую новым разработчикам быстро включаться в проект.
  4. Огромный опыт применения зарекомендовавших себя подходов в проектировании, про которые часто забывают в новых проектах и не стремятся их использовать в уже существующих.


Выводы


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

PS: Если такой подход к решению проблемы с предметной областью в PHP фреймворках будет интересен сообществу то мы вполне можем поднатужиться и подготовить open source.
PSS: Сразу предвижу фразы на счет того зачем вам велосипед, если все уже есть. Не вижу смысла спорить по этому поводу, это наш подход и он сработал.
PSS: Так же предвижу вопросы, зачем делать кровосмешение Transaction Script и Domain Model, а почему бы не сделать и не получить гибкий инструмент для решения бизнес задач.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/282253/


Метки:  

Доклад Мари Микер с Code Conference: главное

Среда, 31 Мая 2017 г. 23:40 + в цитатник
image
Источник картинки: Recode.net

Партнер венчурной компании Kleiner Perkins Caufield & Byers Мари Микер поделилась своим супер-отчетом на Code Conference в Калифорнии.

Сайт Recode.net (организаторы конференции) подготовил быстрый обзор одного из самых ожидаемых докладов Силиконовой Долины. Отчет этого года включил 355 слайдов и тонны информации, включая новую секцию о здравоохранении, которую Мари, впрочем, не презентовала вживую.


Несколько опорных точек отчета:



  • Глобальное развитие смартфонов замедляется: поставки смартфонов выросли на 3% по сравнению с прошлым годом — в прошлом году этот процент составил 10%. Кроме того, продолжает замедление роста интернета в целом, о чем Микер говорила еще в прошлом году.
  • Голос заменяет печатный ввод в онлайн-запросах. С помощью голоса было сделано 20% мобильных запросов в 2016, в то время как их точность на данный момент составляет 95%.
  • За 10 лет доля Netflix в общей выручки индустрии домашних развлечений в США поднялась с 0 до 30%. В то же время ТВ-аудитория продолжает сокращаться.
  • Микер отмечает, что предприниматели часто оказываются геймерами и цитирует Илона Маска, Рейда Хоффмана и Марка Цукерберга. Международный интерактивный гейминг становится мейнстримом — в 2017 году насчитывается уже 2,6 миллиарда геймеров по сравнению со 100 миллионами в 1995 году. Выручка индустрии в целом оценивается в 100 миллиардов долларов за 2016 год. Китай (ожидаемо) — главный рынок для интерактивного гейминга.
  • Китай остается самым интересным рынком с огромными темпами роста сферы мобильных услуг, платежей и таких услуг как байк-шэринг по запросу.
  • В то время как рост интернета замедляется по всему миру, Индию c ее наиболее быстрорастущей экономикой эти процессы вообще не касаются. Количество интернет-пользователей вырос более чем на 28% за 2016 год — и это только 27% общего онлайн-проникновения, что означает огромный простор для роста интернет-аудитории. Также растет и мобильный интернет, поскольку стоимость широкополосного соединения снижается.
  • В 2016 году в США 60% наиболее высоко оцениваемых компании на рынке высоких технологий были основаны американцами в первом или втором поколении. В этих компаниях трудоустроено более чем 1,5 миллионов сотрудников. Эти компании включают таких гигантов как Apple, Alphabet, Amazon and Facebook.
  • Здравоохранение: носимые гаджеты постепенно втираются в доверие — сейчас уже 25% американцев приобрели хотя бы один девайс (по сравнению с 12% в 2016 году). Ведущие высокотехнологичные бренды уже зарекомендовали себя на диджитал-рынке здравоохранения, и более 60% потребителей готовы делиться данными о своем здоровье c определенными компаниями вроде Google и Microsoft.


Читайте отчет целиком (на английском) и смотрите видео с выступления Микер по ссылке.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/329958/


Метки:  

Поиск сообщений в rss_rss_hh_new
Страницы: 1437 ... 987 986 [985] 984 983 ..
.. 1 Календарь