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

Поиск сообщений в 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 ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

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

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

Пятница, 21 Июля 2017 г. 14:58 + в цитатник
На прошлых выходных, 15-16 июля, состоялся первый этап выборов президента CTFzone. Первый онлайн этап CTFzone является отборочным туром для основного круга президентских выборов, которые пройдут этой осенью в рамках конференции ZERONIGHTS 2017. В отборочном туре приняли участие 765 команд со всех уголков планеты – президентская компания CTFzone привлекла внимание участников из 81 страны мира.

image

Первый тур длился 36 часов и проходил в формате Jeopardy. Каждая команда представляла собой избирательный штаб кандидата на пост президента CTFzone. Основными задачами штабов были повышение уровня популярности кандидата и получение голосов избирателей. Для этого участникам было предложено решить 20 заданий различных категорий: Web, Crypto, MISC, Forensic, Pwn и Reverse. Баллы за задания начислялись по динамической системе – изначально команды получали одинаковое количество баллов, однако по мере увеличения числа участников, успешно справившихся с заданием, полученные баллы за него пересчитывались.

Наибольшей популярностью пользовались задания категорий Web и Crypto. Самыми сложными категориями оказались Forensic и MISC – задания данных категорий оказались под силу немногим, а один таск так и остался нерешенным.

По итогам соревнований во второй тур прошли 10 российских и зарубежных команд – им будет предложено принять участие во втором туре выборов CTFzone и привести своего кандидата к окончательной победе.

Второй этап состоится 16-17 ноября и пройдет в формате Attack/Defence. Учитывая высокий уровень профессионализма прошедших команд, битва обещает быть напряженной. Поэтому, мы желаем победителям первого тура удачи и ждем всех на конференции ZERONIGHTS 2017 в ноябре.

До новых встреч!
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333858/


Метки:  

[Из песочницы] Обзор-рейтинг провайдеров виртуальных серверов Windows: 2017

Пятница, 21 Июля 2017 г. 14:12 + в цитатник


В марте 2017 года возникла необходимость в обновлении серверного оборудования под MS SQL Server и терминальный сервер, необходимых для работы приложения по учёту продаж. Стоимость нового сервера и системы хранения превышало 700 т.р., что не укладывалось в наши бюджеты, поэтому решили рассмотреть виртуальные серверы для размещения наших приложений.

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

  1. Реализация отказоустойчивости на уровне гипервизора;
  2. Преимущественно отказоустойчивое хранение данных;
  3. Низкая стоимость резервного копирования и простая реализация для нас;
  4. Расширение ресурсов в соответствии с нашими потребностями (Pay as you grow);
  5. Наличие SLA.

Программа и методика испытаний


Программа и методика испытаний, которая была заранее определена для тестирования провайдеров.
Объекты тестирования:

  1. Вычислительная подсистема;
  2. Дисковая подсистема;
  3. Подключение к сети Интернет.

Для тестирования подсистем использовалось следующее ПО:

  • Вычислительная подсистема: Linpack
  • Дисковая подсистема: CrystalDiskMark, HD Tune Pro
  • Пропускная способность: beta.speedtest.net

Настройки ПО:
Вычислительная подсистема: Linpack
Объём задачи
10000
Объём памяти
772 МБ
Время испытания
5 часов
Режим
64-bit
Число потоков
Равняется количеству ядер
Данные
4 КБ
Дисковая подсистема: CrystalDiskMark
Размер файла
1 ГБ
Количество проверок
5
Дисковая подсистема
HD Tune Pro
Benchmark
Чтение
File Benchmark
Размер файла 500 МБ
Шаблон: заполнение нулями
Пропускная способность доступа в сеть Интернет
Москва
Билайн
Краснодар
РТ (Ростелеком)
Екатеринбург
РТ
Иркутск
РТ
Владивосток
РТ
Франкфурт
Leaseweb

Перечень городов обусловлен наличием в них наших филиалов. Для проведения испытаний использовалось подключение к сети Инернет в конкретном филиале. Измерение скорости проводилось с использованием beta.speedtest.net. Франкфурт взяли для понимания скорости загрузки в ownCloud, который размещается в Leaseweb.

Критерии оценивания


Использовали следующие критерии для оценивания провайдеров.
Наименование
Баллы
Описание
Дата-центр
0.6

Информация о ДЦ
0.2
Информация о том, где размещается оборудование
Информация об инженерных подсистемах
0.2
Данные об уровне инженерных подсистемах ДЦ
Сертификация TIER
0.2
Есть ли подтверждение о сертификации TIER по uptime institute / IBM и подобных организаций
Информация об оборудовании
0.3

Серверное оборудование
0.1
Какое оборудование используется и какие вычислители задействованы в кластере
Система хранения данных
0.1
Используются ли СХД или SDS решения
Сетевое оборудование
0.1
Используемое сетевое оборудование
Информация о юр.лице
0.3

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

Договор оферты
0.2

Договор оферты
0.1
Доступ к договору оферты без прохождения регистрации
SLA
0.3
Доступ к SLA без прохождения регистрации
Тестирование сервиса
Вычислительная подсистема
0.4

Соответствие заявленной частоты и выделенной частоты процессора
0.2
Соответствие выделенной частоты и процессора согласно описанию тарифа
Стабильность вычислительной подсистемы
0.2
Стабильность вычислительной подсистемы без заметных провисов в производительности
Недокументированное ограничение вычислительной подсистемы
-0.3
Наличие ограничений на использование CPU, которое не документировано в договоре. Параметр добавлен после выставления ограничений на ресурсы одним из провайдеров
Дисковая подсистема
0.8

Стабильность дисковой подсистемы
0.2
Стабильность дисковой подсистемы с низкой задержкой и без заметных провисов в производительности
Высокоскоростная дисковая подсистема
0.2
Высокая скорость дисковой подсистемы на уровне SSD (Seq.R 400 / Seq.W 300), HDD (Seq.R 100 / Seq.W 100)
Высокая доступность данных
0.2
В случае падения сервера данные будут доступны
Отказоустойчивость дискового хранения
0.2
Сетевое соединение
0.5

Стабильность сетевого соединения
0.2
Стабильное сетевое подключение без обрывов и зависаний
Низкие задержки по России
0.1
Субъективный параметр основываясь на текущих наших средних показателях PRTG
Высокая скорость доступа по России (более 20 мбит/с)
0.2

Дополнительные услуги
1

Базовая техническая поддержка
0.2
Наличие бесплатной базовой технической поддержки (не включая конфигурирование сервисов)
Расширенная техническая поддержка
0.2
Наличие расширенной технической поддержки (включая конфигурирование сервисов)
Бесплатная лицензия Windows Server
0.2
Бесплатное предоставление Windows Server по программе SPLA
Лицензия ПО 0.1 Возможен заказ дополнительных лицензий
Гибкое расширение ресурсов 0.3 Создание произвольной конфигурации виртуального сервера с возможностью расширения ресурсов

Список провайдеров


Был определён список провайдеров, согласно следующим критериям:

  • размещение в России;
  • лицензия Windows Server включена в стоимость;
  • бесплатное тестирование сервиса перед покупкой;
  • возможность увеличения ресурсов виртуального сервера;
  • гипервизор Hyper-V или VMware.

Согласно нашим критериям были определены следующие провайдеры:

  • ultravds.com / ruvds.com / bigd.host
  • incloud.ru
  • cloudlite.ru
  • parking.ru
  • 1cloud.ru
  • neoserver.ru
  • adman.com
  • infobox.ru
  • eserver.ru
  • mclouds.ru
  • ihc.ru
  • cloud-pro.ru
  • rackstore.ru
  • docker.ru

Провайдеры, которые были отклонены из-за отсутствия бесплатного тестирования:

  • ultravds.com / ruvds.com / bigd.host
  • adman.com
  • parking.ru
  • docker.ru
  • cloud-pro.ru — ответа не получили

Особые условия тестирования:

  • eserver.ru — активация после предоставления скана документа, подтверждающего личность
  • neoserver.ru — активация через менеджера и по будням
  • rackstore.ru — активация через менеджера

Для экономии вашего времени можете воспользоваться следующими ссылками:

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

Тестирование провайдеров


incloud.ru


Хостинг провайдер incloud.ru предоставляет виртуальные машины на платформе виртуализации VMware vSphere.

Провайдер: incloud.ru
Дата-центр: Россия, г. Москва, ДЦ MSTN
Платформа виртуализации: VMware
Триальный период: предоставляется по запросу на 3 дня
Время активации сервера: после создания запроса данные для доступа предоставили через 15 минут

Заявленное оборудование:
Серверное оборудование — HP, Dell, Supermicro
Сетевое оборудование — Cisco, Juniper
Система хранения данных — Dell

Характеристики тестируемого сервера:
vCPU: 2 x 2.4 (Intel Xeon E5645)
RAM: 2GB
Хранение: 50GB SSD

Результаты тестирования incloud.ru


CPU
Согласно показателям LINPACK частота в сторону виртуальных машин ограничивается, информация о частоте при оформлении не указывается.

Частота CPU: 1.597 GHz
Количество CPU: 2
Количество ядер: 2
Число потоков: 2
Среднее значение производительности 18.86 GFlops.
Отклонение от среднего значения: до 6%

График производительности в GFlops




Дисковая подсистема
В качестве системы хранения используются СХД Dell, тестирование производилось на SSD.

Тестирование с помощью CrystalDiskMark

Тестирование производительности с помощью HD Tune Pro
Скорость чтения подскакивает после сохранения данных в кеше, это косвенно подтверждает то, что используется СХД.

Кеш виден издалека.

Работа с данными проходит гладко, сразу видно промышленную СХД, но утилизация ресурсов ограничена на чтение и запись на уровне 100 MB/s. Однако, этого вполне достаточно для комфортной работы.



Пропускная способность доступа в сеть Интернет

Местоположение
Download (Mbps)
Upload (Mbps)
Ping (ms)
Москва (Beeline)
96.46
90.55
19
Краснодар (Rostelecom)
96.25
78.56
29
Екатеринбург (Rostelecom)
96.36
69.19
47
Иркутск (Rostelecom)
95.55
48.08
82
Владивосток (Rostelecom)
88.31
26.26
133
Франкфурт (Leaseweb)
96.23
75.11
42

Дополнительные возможности:

  • Резервное копирование
  • Лицензии ПО (Microsoft)
  • Защита от DDoS-атак

Доступные образы: Windows Server 2008 R2, 2012 R2 и Linux-based. Доступна установка из своего образа
Стоимость: 1620 рублей в месяц за конфигурацию: 2 vCPU / 2 GB RAM / 40 GB SSD / Windows Server 2012 R2
Стоимость дополнительных ресурсов:

  • 1 vCPU — 200 рублей
  • 1 GB RAM — 200 рублей
  • 10 GB SATA — 50 рублей
  • 10 GB SAS — 100 рублей
  • 10 GB SSD — 150 рублей

Ограничения согласно правилам:
Исполнитель оставляет за собой право ограничить скорость канала до 10-30 Мбит/с или заблокировать сервер в случае генерации большого объёма сетевого трафика на протяжении длительного периода времени, который будет создавать нагрузку на сетевое оборудование более 90%.

Плюсы:

  • стабильная вычислительная и дисковая подсистема;
  • произвольная конфигурация.

Минусы:

  • ограниченные ресурсы вычислительной, дисковой подсистемы и доступа в сеть Интернет;
  • отсутствие онлайн чата для уточнения состава услуг;
  • на сайте представлено мало информации о компании.

ihc.ru


Хостинг-провайдер ihc.ru предоставляет широкий спектр услуг хостинга, начиная от размещения сайтов на shared хостинге до размещения виртуальных машин и аренды выделенных серверов в нескольких московских центрах обработки данных.
Провайдер: ihc.ru
Дата-центр: Россия, г. Москва, ДЦ DataPro и ДЦ IXcellerate
Платформа виртуализации: Microsoft Hyper-V
Триальный период: предоставляется на 3 дня при условии пополнения баланса на сумму от 100 р. (средства остаются на балансе и могут быть использованы в дальнейшем при оплате услуг)
Время активации сервера: 5 минут

Заявленное оборудование:
Серверное оборудование — нет информации
Сетевое оборудование — нет информации
Система хранения данных — локальный RAID5

Характеристики тестируемого сервера:
vCPU: 2 x 2.0 (E5645)
RAM: 4GB
Хранение: 50GB SAS HDD

Результаты тестирования ihc.ru


CPU
Согласно показателям LINPACK частота ЦП в сторону виртуальных машин ограничивается, информация о частоте при оформлении указана на уровне 2 GHz.
Частота CPU: 1.286 GHz
Количество CPU: 1
Количество ядер: 2
Число потоков: 2
Среднее значение производительности 4.79 GFlops.
Отклонение от среднего значения: до 2%

График производительности в GFlops

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

Стабильное, но не «быстрое» вычисление без заметных провалов.

Дисковая подсистема
Интересное выделение дискового пространства для виртуальной машины — под ОС выделяется 30GB и дополнительно 50GB согласно тарифному плану.


Как указано в описании тарифа RAID5 SAS HDD.

Тестирование производительности с помощью HD Tune Pro




Пропускная способность доступа в сеть Интернет
Местоположение
Download (Mbps)
Upload (Mbps)
Ping (ms)
Москва (Beeline)
204.83
269.13
2
Краснодар (Rostelecom)
191.81
232.82
107
Екатеринбург (Rostelecom)
122.68
177.04
181
Иркутск (Rostelecom)
120.90
106.89
74
Владивосток (Rostelecom)
104.41
34.33
161
Франкфурт (Leaseweb)
143.03
181.90
65

Дополнительные возможности:

  • Резервное копирование
  • Возможность приобретения дополнительных IP-адресов
  • Лицензии на ПО (ISPmanager, Microsoft, 1С-Битрикс)

Доступные образы: Windows Server 2008 R2, 2012 R2
Стоимость: 3000 рублей в месяц за конфигурацию: 2 x 2 GHz (2 GHz гарантировано) / 4 GB RAM / 50 GB RAID5 SAS HDD / Windows Server 2012 R2
Ограничения согласно правилам: При достижении объёма трафика 3 000 ГБ скорость ограничивается до 10 Мбит/с до конца расчётного месяца. Скорость может быть восстановлена за 250 р (1000 ГБ)

Плюсы:

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

Минусы:

  • реальная частота CPU оказалась ниже заявленной;
  • низкая скорость R/W 4K секторов;
  • высокие задержки на маршрутах по России;
  • отсутствие информации об используемых серверах и системе хранения данных.

infobox.ru


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

Провайдер: infobox.ru
Дата-центр: Россия г. Санкт-Петербург. Нидерланды, ДЦ EvoSwitch
Платформа виртуализации: Virtuozzo
Триальный период: 5 дней
Время активации сервера: 10 минут

Заявленное оборудование:
Серверное оборудование — Supermicro
Сетевое оборудование — Juniper
Система хранения данных — нет информации

Характеристики тестируемого сервера:
vCPU: 2 x 2.3 (E5-2650v3)
RAM: 2GB
Хранение: 50GB SSD

Результаты тестирования infobox.ru


CPU
Согласно показателям LINPACK частота ЦП виртуальных машин не ограничивается, информация о частоте при оформлении указана на уровне 2.3 GHz.
Частота CPU: 2.414 GHz
Количество CPU: 1
Количество ядер: 2
Число потоков: 2
Среднее значение производительности 20.91 GFlops.
Отклонение от среднего значения: до 19%

График производительности в GFlops



Хорошее среднее значения производительности в GFlops, но имеются провалы в производительности до 19%.

Дисковая подсистема


Тестирование производительности с помощью HD Tune Pro


Исходя из графиков можно предположить, что пользователи активны в работе с дисковой подсистемой. Возможно, используется SDS-решение (программно-определяемое хранилище) или СХД.

Пропускная способность доступа в сеть Интернет
Местоположение
Download (Mbps)
Upload (Mbps)
Ping (ms)
Москва (Beeline)
126.43
17.66
45
Краснодар (Rostelecom)
103.5
20.34
93
Екатеринбург (Rostelecom)
114.95
18.26
127
Иркутск (Rostelecom)
53.78
19.96
110
Владивосток (Rostelecom)
48.68
17.33
190
Франкфурт (Leaseweb)
193.87
20.31
15

Дополнительные возможности:

  • Резервное копирование
  • Администрирование серверов
  • Лицензии ПО (Microsoft, Parallels)

Доступные образы: Windows Server 2008, 2008 R2, 2012, 2012 R2 и Linux-based
Стоимость: 1500 рублей в месяц за конфигурацию: 2 x 2 GHz / 2 GB RAM / 50 GB SSD / Windows Server 2012 R2
Стоимость дополнительных ресурсов: 10 GB SSD — 200 рублей
Ограничения согласно правилам: Пропускная способность сети 20 Мбит/с.

Плюсы:

  • высокоскоростная дисковая подсистема;
  • производительная вычислительная подсистема.

Минусы:

  • высокие задержки по России;
  • нет возможности изменить конфигурацию виртуальной машины.

1cloud.ru


1cloud.ru — облачный сервис провайдер предоставляющий виртуальные серверы на платформе виртуализации VMware vSphere с облачным функционалом — высокая доступность вычислительных ресурсов и ресурсов хранения.

Провайдер: 1cloud.ru
Дата-центр: Россия г.Москва ДЦ Dataspace. г. Санкт-Петербург ДЦ SDN. Казахстан ДЦ Ahost
Платформа виртуализации: VMware
Триальный период: 3 дня
Время активации сервера: 15 минут

Заявленное оборудование:
Серверное оборудование — Cisco, Dell
Сетевое оборудование — Cisco
Система хранения данных — Dell, NetApp

Характеристики тестируемого сервера:
vCPU: 2 x 2.0 (E7-4850)
RAM: 2GB
Хранение: 40GB SSD

Результаты тестирования 1cloud.ru


CPU
Согласно показателям LINPACK частота ЦП виртуальных машин не ограничивается, информация о частоте при оформлении указана на уровне 2 GHz.
Частота CPU: 2.082 GHz
Количество CPU: 2
Количество ядер: 2
Число потоков: 2
Среднее значение производительности 12.57 GFlops.
Отклонение от среднего значения: до 16%

График производительности в GFlops



Дисковая подсистема


Тестирование производительности с помощью HD Tune Pro



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

Пропускная способность доступа в сеть Интернет
Местоположение
Download (Mbps)
Upload (Mbps)
Ping (ms)
Москва (Beeline)
19.72
19.78
13
Краснодар (Rostelecom)
19.71
19.64
78
Екатеринбург (Rostelecom)
19.64
16.55
41
Иркутск (Rostelecom)
19.76
16.16
72
Владивосток (Rostelecom)
19.6
12.65
135
Франкфурт (Leaseweb)
19.75
15.62
48

Дополнительные возможности:

  • Резервное копирование
  • Лицензии ПО (Microsoft)

Доступные образы: Windows Server 2008 R2, 2012 R2, Linux-based
Стоимость: 1650 рублей в месяц за конфигурацию: 2 x 2GHz / 2 GB RAM / 40 GB SSD / Windows Server 2012 R2
Стоимость дополнительных ресурсов:

  • 1 vCPU — 110 рублей
  • 1 GB RAM — 315 рублей
  • 1 GB SATA — 3 рублей
  • 1 GB SAS — 5 рублей
  • 1 GB SSD — 20 рублей

Ограничения согласно правилам: 10 Мбит/с гарантированный канал, 100 Мбит/с максимально возможный.

Плюсы:

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

Минусы:

  • низкая пропускная способность канала и высокие задержки
  • есть недокументированные лимиты на использование ресурсов CPU


cloudlite.ru


Проект компании DataLine по предоставлению вычислительных ресурсов на базе сертифицированных дата-центров по программе TIER III.

Провайдер: cloudlite.ru
Дата-центр: Россия г.Москва ДЦ DataLine NORD / OST.
Платформа виртуализации: VMware
Триальный период: виртуальный сервер не предоставляется
Время активации сервера: 3 минуты

Заявленное оборудование:
Серверное оборудование — Huawei
Сетевое оборудование — Cisco, Juniper
Система хранения данных — SDS

Характеристики тестируемого сервера:
vCPU: 2 x 2.2 (E7-4830 v2)
RAM: 2GB
Storage: 50 GB NL SAS HDD

Результаты тестирования cloudlite.ru


CPU
Согласно показателям LINPACK частота ЦП виртуальных машин не ограничивается, информация о частоте при оформлении указана на уровне 2.2 GHz.
Частота CPU: 2.147 GHz
Количество CPU: 2
Количество ядер: 2
Число потоков: 2
Среднее значение производительности 27.70 GFlops.
Отклонение от среднего значения: до 5%

График производительности в GFlops




Дисковая подсистема


Тестирование производительности с помощью HD Tune Pro


За высокую доступность и отказоустойчивость отвечает VMware VSAN.

Пропускная способность доступа в сеть Интернет
Местоположение
Download (Mbps)
Upload (Mbps)
Ping (ms)
Москва (Beeline)
9.6
9.47
2
Краснодар (Rostelecom)
9.58
9.6
23
Екатеринбург (Rostelecom)
9.58
9.46
29
Иркутск (Rostelecom)
9.61
9.28
64
Владивосток (Rostelecom)
9.61
8.45
115
Франкфурт (Leaseweb)
9.58
9.44
49

Дополнительные возможности:

  • Резервное копирование
  • Лицензии ПО

Доступные образы: Windows Server 2008 R2, 2012 R2, Linux-based
Стоимость: 1857.6 рублей в месяц за конфигурацию: 2 x 2.2GHz / 2 GB RAM / 50 GB NL SAS HDD / Windows Server 2012 R2
Ограничения согласно правилам: Каждый виртуальный выделенный сервер (VPS/VDS) подключен на гарантированной скорости 10 Мбит/сек

Плюсы:

  • высокая производительность CPU;
  • низкие задержки по России.

Минусы:

  • с лицензией Windows стоимость сильно увеличивается по сравнению с тарифами на Linux;
  • невысокая скорость доступа в сеть Интернет.


mclouds.ru


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

Провайдер: mclouds.ru
Дата-центр: г.Москва ДЦ Dataline NORD4
Платформа виртуализации: VMware
Триальный период: 1 день
Время активации сервера: 5 минут

Заявленное оборудование:
Серверное оборудование — HP, Supermicro
Сетевое оборудование — Cisco, Huawei
Система хранения данных — нет информации

Характеристики тестируемого сервера:
vCPU: 2 x 2.6 (E5-2670)
RAM: 2GB
Storage: 40 GB SSD

Результаты тестирования mclouds.ru


CPU
Согласно показателям LINPACK частота ЦП виртуальных машин не ограничивается, информация о частоте при оформлении указана на уровне 2.6 GHz.
Частота CPU: 2.592 GHz
Количество CPU: 2
Количество ядер: 2
Число потоков: 2
Среднее значение производительности 39.74 GFlops.
Отклонение от среднего значения: до 9%

График производительности в GFlops

На графике видна высокая производительность двух вычислительных ядер на уровне 40 GFlops.



Дисковая подсистема


Тестирование производительности с помощью HD Tune Pro



Пропускная способность доступа в сеть Интернет
Местоположение
Download (Mbps)
Upload (Mbps)
Ping (ms)
Москва (Beeline)
87.9
83.6
3
Краснодар (Rostelecom)
89.4
31.3
17
Екатеринбург (Rostelecom)
97.4
89.1
29
Иркутск (Rostelecom)
76.1
59.7
64
Владивосток (Rostelecom)
91.3
45.1
107
Франкфурт (Leaseweb)
98
91.7
43

Дополнительные возможности:

  • Резервное копирование
  • Лицензии ПО

Доступные образы: Windows Server 2008 R2, 2012 R2, 2016 и Linux-based. Доступна установка из своего образа
Стоимость: 699 рублей в месяц за конфигурацию: 2 x 2.6GHz / 2 GB RAM / 40 GB SSD / Windows Server 2012 R2
Стоимость дополнительных ресурсов:

  • 1 vCPU — 99 рублей
  • 1 GB RAM — 190 рублей
  • 1 GB SSD — 20 рублей

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

a. vCPU: не более 2500 MIPS на vCPU.
b. SSD IOPS: не более 75 IOPS на 1 GB SSD.
c. Средняя пропускная способность: не более 25 Мбит/c на протяжении 8 часов

Плюсы:

  • стабильная и производительная вычислительная и дисковая подсистема;
  • низкие задержки по России.

Минусы:

  • ограниченные ресурсы вычислительной, дисковой подсистемы и доступа в сеть Интернет;
  • нет информации об используемой СХД.

Сводная таблица с критериями оценки
Наименование
Баллы
incloud.ru
ihc.ru
infobox.ru
1cloud.ru
cloudlite.ru
mclouds.ru
Дата-центр
0.6
0.1
0.5
0.3
0.6
0.1
0.6
Информация о ДЦ
0.2
0
0.2
0.1
0.2
0.1
0.2
Информация об инженерных подсистемах
0.2
0.1
0.1
0.2
0.2
0.2
0.2
Сертификация TIER
0.2
0
0.2
0
0.2
0.2
0.2
Информация об оборудовании
0.3
0.3
0
0
0.3
0.3
0.2
Серверное оборудование
0.1
0.1
0
0
0.1
0.1
0.1
Система хранения данных
0.1
0.1
0
0
0.1
0.1
0.0
Сетевое оборудование
0.1
0.1
0
0
0.1
0.1
0.1
Информация о юр.лице
0.3
0
0.3
0.3
0.3
0.2
0.2
Контактные данные
0.1
0
0.1
0.1
0.1
0.1
0.1
Адрес юр.лица
0.1
0
0.1
0.1
0.1
0.1
0.1
Реквизиты компании
0.1
0
0.1
0.1
0.1
0
0
Информация о платформе виртуализации
0.1
0.1
0.1
0.1
0.1
0.1
0.1
Договор оферты
0.4
0.1
0.1
0.1
0.4
0.4
0.4
Договор оферты
0.1
0.1
0.1
0.1
0.1
0.1
0.1
SLA
0.3
0
0
0
0.3
0.3
0.3
Тестирование сервиса
Вычислительная подсистема
0.4
0.2
0.2
0.2
-0.1
0.4
0.4
Соответствие заявленной частоты и выделенной частоты процессора
0.2
0
0
0.2
0.2
0.2
0.2
Стабильность вычислительной подсистемы
0.2
0.2
0.2
0
0
0.2
0.2
Недокументированное ограничение вычислительной подсистемы

* во время тестирования ограничения не были выявлены
-0.3
0*
0*
0*
-0.3
0*
0*
Дисковая подсистема
0.8
0.6
0.5
0.3
0.8
0.6
0.6
Стабильность дисковой подсистемы
0.2
0.2
0.2
0.1
0.2
0.2
0.2
Высокоскоростная дисковая подсистема
0.2
0
0.2
0.2
0.2
0.2
0.2
Высокая доступность данных
0.2
0.2
0
0
0.2
0.2
0.1
Отказоустойчивость дискового хранения
0.2
0.2
0.1
0.1
0.2
0.2
0.1
Сетевое соединение
0.5
0.5
0.4
0.4
0.3
0.3
0.5
Стабильность сетевого соединения
0.2
0.2
0.2
0.2
0.2
0.2
0.2
Низкие задержки по России
0.1
0.1
0
0
0
0.1
0.1
Высокая скорость доступа по России (более 20 мбит/с)
0.2
0.2
0.2
0.2
0.1
0
0.2
Дополнительные услуги
1
0.8
0.5
0.5
0.6
0.8
0.7
Базовая техническая поддержка
0.2
0.2
0.2
0
0
0.2
0.2
Расширенная техническая поддержка
0.2
0
0
0.2
0
0
0
Бесплатная лицензия Windows Server
0.2
0.2
0.2
0.2
0.2
0.2
0.2
Лицензия ПО
0.1
0.1
0.1
0.1
0.1
0.1
0
Гибкое расширение ресурсов
0.3
0.3
0
0
0.3
0.3
0.3
Итого
3,4
1,9
2,1
1,7
2,7
2,8
3


Сводная таблица с результатами тестирования

incloud.ru
ihc.ru
infobox.ru
1cloud.ru
cloudlite.ru
mclouds.ru
CPU GHz заявленная
2
2
2.2
2.6
CPU GHz выделенная
1.597
1.286
2.414
2.082
2.147
2.592
Ср.знач. GFlops
18.86
4.79
20.91
12.57
27.7
39.74
Отклонение от ср.знач. в %
6
2
19
16
5
9
Seq.R Q32T1 (MB/s)
113 (SSD)
695.6 (HDD)
1402 (SSD)
657.5 (SSD)
652.4 (HDD)
1042 (SSD)
Seq.W Q32T1 (MB/S)
113.2 (SSD)
127.4 (HDD)
1300 (SSD)
549.2 (SSD)
443.6 (HDD)
688.1 (SSD)
4 KB Random Read (IOPS)
8143
20603
21531
19874
12785
37023
4 KB Random Write
(IOPS)
3965
1105
32020
20097
6549
21943
Access time (ms)
0.287
0.811
0.400
1.02
3.59
0.228

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

Подводим итоги


Как видно по результатам тестов, уровень качества предоставляемых услуг в плане производительности работы ВМ у всех хостинг провайдеров различный. Приведенные результаты не претендуют на истину в последней инстанции, но я постарался сделать эту информацию максимально объективной. Надеюсь, это поможет сэкономить время тем, кому нужны вычислительные ресурсы, но нет необходимого бюджета на новое оборудование. Выход есть. Рынок облачных хостинг провайдеров в России широк и конкуренция здесь достаточно высока. Считаю, что доверять работу своих бизнес-приложений «облакам» можно и нужно, но следует внимательно относиться к выбору провайдера.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333854/


Метки:  

Британские спутниковые снимки 2: Как все было на самом деле

Пятница, 21 Июля 2017 г. 14:06 + в цитатник
image

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

Краткое содержание первой части:
1. DSTL (научно-техническая лаборатория при министерстве обороны Великобритании) провела соревнование на Kaggle.
2. Соревнование закончилось 7 марта, результаты объявлены 14 марта.
3. Пять из десяти лучших команд — русскоговорящие, причем все они являются членами сообщества Open Data Science.
4. Призовой фонд в $100,000 разделили брутальный малазиец Kyle, команда Романа Соловьева и Артура Кузина, а также я и Сергей Мушинский.
5. По итогам были написаны блог-посты (мой пост, пост Артура, наш с Серегой пост на Kaggle), проведены выступления на митапах (мое выступление в Adroll, мое выстпление в H20.ai, выступление Артура в Yandex, выступление Евгения Некрасова в Mail.Ru Group), написан tech report на arxiv.

Организаторам понравилось качество предложенных решений, но не понравилось, сколько они за это соревнование отстегнули. В Каggle ушло $500k, в то время как призовые всего $100k.

Был сделан логичный вывод — создать свой британский Kaggle с преферансом и гимназистками. Знаний и умений у двигателей науки при министерстве обороны UK и MI6, на серьезный AI Research не хватит, поэтому вместо того, чтобы сделать закрытый междусобойчик для своих, они устроили открытое соревнование, но с мутными правилами, а именно: участвовать могут все, а вот на призовые претендовать только те, кто является гражданами и проживает в странах, которые выше некой отсечки в очередном коррупционном рейтинге 2014 года. Почему 2014, а не чего-то более свежего? Это до сих пор непонятно. Существует конспирологическое мнение, что 2014 год был выбран именно для того, чтобы оставить за бортом китайцев и не оставить индусов. А вот в 2016 году Индия и Китай имеют одинаковый рейтинг, так что фокус бы не прошел.

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

Для получения денег за то соревнование, про которое рассказано в первой части, было необходимо провести skype-конференцию с представителями DSTL и в двух словах описать решение. Мы презентовали, описали. Они откровенно плыли и, собственно, отчасти на этом основывается мое самоуверенное предположение о том, что специалистов высокого полета у них нет. Но сами по себе эти британские ученые достаточно адекватные, и в конце нашей речи их главный, в качестве рекламы, упомянул, что они тоже не пальцем деланы, и что у них есть своя площадка для проведения соревнований, и что вот только что стартовали две задачи, одна — под Computer Vision, другая — под Natural Language Processing и у каждой призовой фонд 40 тысяч фунтов (20k, 12k, 8k). Мы ответили, что в курсе и, в свою очередь, вежливо поинтересовались: «А почему у вас правила дискриминационные”? Мужик ответил, что это все ерунда, что это не они, а подрядчик, который проводит соревнование так начудил, и что DSTL тоже против дискриминации, что всё поменяют и вообще, счастья всем и каждому.

Позже мы уточнили по email, насколько серьезно они намереваются придерживаться правильной линии партии и получили в ответ:
— There is likely to be a change to the terms and conditions relating to the datasciencechallenge.org. The original conditions were set by the company who are running the challenge for us (based on legal grounds) but following feedback they have/will be changed. Please don't let it put you off participating.

Но на самом деле, это все было не важно. Идея в том, что с одной стороны я сильно проседал на знаниях в Object Detection и под это дело лихо пролетал на интервью. Например, в Nvidia на self driving car, я влетел на том, что Image Classification я умею, Image Segmentation умею, а вот Object Detection, который очень важен для многих бизнесовых задач, которые используют компьютерное зрение — нет. А как известно, учиться лучше в бою, так что это надо либо свой проект в свободное время пилить, либо поработать над каким-нибудь соревнованием.

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

Суммируя:
1. О том, что денежный приз гражданам России не светит, было известно заранее. Когда позже вся эта история прошла по новостям этот кусок опускался, так как работать в режиме „наших бьют“ гораздо выгоднее для рейтинга. Да, была надежда, что правила поменяют, но „обещать — не значит жениться“, так что сильно на это никто не рассчитывал.
2. Соревнования — это 10-100x по специфичным знаниям в единицу времени в машинном обучении, по сравнению с академической средой или работой. Очень было нужно разобраться в Object Detection, плюс, хотелось, чтобы появился pipeline под этот тип задач, так как pipeline'ы имеют привычку кочевать из задачи в задачу, трансформируя многие задачи из „что-то как-то понятно, но не очень — влечу на пару месяцев“ в „задача сложная, значит на написание pipeline уйдет не один вечер, а целых два“.

Постановка задачи


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

В задаче, про спутники, про которую рассказывалось в первой части, с данными все было сложно:

1. Снимки представлены в куче различных спектральных диапазонов, разрешениях, каналы сдвинуты как во времени, так и в пространстве.
2. Данных мало. Train, public test и private test соответствуют различным распределениям.
3. Классы сильно разбалансированы. Например, в train set одному пикселю класса машинок соответствовало 60000 пикселей класса ферм. Собственно, в нашем с Серегой решении мы полностью положили болт на машинки и не заморачивались c их нахождением в Нигерийских джунглях в которых все действо и происходило как раз из-за проблем с данными этого класса.

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

В этой же задаче все было наоборот:
1. Данные представлены в обычном RGB, сделаны с одной высоты, и чуть не в одно время.
2. Train и test представлены 1200 картинками (600 и 600), каждая размером 2000x2000, в разрешении 5 см / pixel. То есть достаточно для решения задачи, но при этом не требует кластера из GPU и нескольких недель обучения.

В стандартных benchmark-датасетах, отмаркированных под Object Detection, на которых ученые мужи занимаютcя выяснением, чей алгоритм лучше, объекты отмечены через bounding boxes (боксы), то есть каждому объекту из train соответствуют координаты прямоугольника и метка класса, а модель, в свою очередь, предсказывает координаты прямоугольников, метку класса и то, насколько модель уверена в предсказании.

image


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

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

Классов было 9, а именно:
  • A — любые мотоциклы и скутеры
  • B — короткие светлые машины
  • C — длинные светлые машины
  • D — короткие темные машины
  • E — длинные темные машины
  • F — короткие красные машины
  • G — длинные красные машины
  • H — белые фургоны
  • I — красно-белые автобусы




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

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


(Картинку предоставил Владислав Кассым)

Метрика


В качестве оценки точности модели использовался jaccard similarity, где True Positive засчитывался, если предсказанная точка рядом с британской меткой, а так как размеры объектов различались, то и расстояние зависело от класса.


Что мы имеем? Задача, которая с одной стороны — стандартная, а с другой — черт его знает, как к ней подступиться. Как вариант, можно попытаться выехать на плечах коллектива, все-таки ребята, которые подобрались в слаке Open Data Science, обладают зашкаливающе высокой квалификаций в машинном обучении. Но факт, что организаторы считают граждан России, Украины и Беларуси людьми второго сорта и что параллельно идет море других задач, где и дискриминации в правилах нет, и денежные призы посимпатичнее, не добавляло мотивации начать работать над задачей. Кроме того, интенсивная рубка, которая шла в задаче про спутники, привела к тому, что многие выгорели, взяли перерыв от соревнований и занялись тем, что важнее, то есть спортом и личной жизнью.

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

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

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



На разметку ушло порядка десяти часов, что, в принципе, немало, но эта инвестиция в дальнейшем помогла легко уйти в топ, да и вообще, занять призовое место. Дополнительной маркировкой решились сразу две задачи, во-первых, стало понятно на чем именно сфокусироваться в литературе и какой чужой код перебивать под эту задачу, а во-вторых, что не менее важно, сразу добавило мотивации ребятам в чатике, чтобы присоединиться к работе над задачей. Много народу не подключилось, потому что, как я упомянул выше, параллельно шли не менее интересные задачи про рак шейки матки и про подсчет морских котиков. Например, Константин Лопухин сразу сказал, что на задачу про британские машинки времени мало, а вот на котиков самое оно и не прогадал, финишировав на той задаче вторым (выступление в Yandex с его решением). Желание набить руку на задаче детектирования британских машинок изъявили Сергей Мушинский и Владислав Кассым. Собственно, все трое и закончили в топ-10.

Итак, месяц до конца, обведены боксы, с этим надо что-то делать. Существуют две основные вариации на архитектуры сети для задачи детекции:
1. Семейство RCNN: Fast RCNN, Faster RNN — то есть сети, у которых pipeline можно разделить на две части: первая — найти области на картинке, которые соответствуют объектам, а вторая — провести классификацию для каждой области, чтобы определить какой именно объект там содержится.
2. Семество YOLO: YOLO, YOLO9000, SSD — в этих архитектурах поиск областей и классификация происходит в один заход.

Встает резонный вопрос, что лучше и когда. В каждой статье авторы утверждают, что вот именно они рвут конкурентов на британский флаг. Такой подход понятен, не будешь заниматься агрессивным академическим cherry picking, оверфитить на стандартные бенчмарки и трындеть про State Of The Art — не получишь грант, твои аспиранты не выпустятся и все прочие радости, которые мы сейчас имеем в академической среде. (На эту тему недавно была очень приятная статья в которой приводилась историческая справка о том, как мы дошли до такой жизни: Is the staggeringly profitable business of scientific publishing bad for science?).

Но это проблемы академической среды и их локальные заморочки. Тут у нас есть четко поставленная задача, есть метрика, есть leaderboard, на котором участники показывают серьезные результаты, а у меня, кроме обведенных боксов, нет ни черта. При наличии большого количества времени и вычислительных ресурсов, можно было бы прогнать все архитектуры через наши данные и посмотреть на то, что получилось, но ни времени, ни желания этого делать конечно не было. Но! Вопрос о том, когда и какие сети хороши, терзал не меня одного. Пару лет назад Object Detection занимались исключительно ученые, но к бизнесу, несмотря на мощь подхода, это не имело отношения. Все упиралось в то, что в отличие от задач классификации и сегментации, задачи детекции работали со скоростью эстонской черепахи, то есть ни о каком real time detection речи не было. Но это все было пару лет назад, то есть по меркам Deep Learning достаточно давно. С тех пор сделано много улучшений и сейчас компании активно применяют Object Detection для зарабатывания своих триллиардов.

Так вот, в свое время ученые мужи, которые работают в Google воспользовались тем, что с вычислительными ресурсами у них все нормально и написали обзорную статью в 11 авторов в которой с одной стороны ни одной новой идеи, а с другой она обладает огромной ценностью, во всяком случае среди меня. В этой статье авторы прогнали Faster RCNN и SSD с различными base feature extractions и провели анализ результатов по скорости и точности.





В статье говорится о том, что Faster RCNN поточнее, особенно на небольших объектах, а SSD предсказывает пошустрее. Причем разница по скорости предсказаний между ними, на мой взгляд, проходит как раз между „нельзя пихать в production“ и „можно пихать в production“. С дивана я не очень представляю под какие задачи можно пихать Faster RCNN в прод, но с удовольствием послушаю про success story в комментариях.

Этой статье я поверил на слово, не потому что я люблю верить на слово и не потому что Google при написании статей больше печется о своем имени и, как следствие, больше говорит по делу, а просто потому что выбора большого не было. Времени до конца соревнования оставалось совсем немного.

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

image


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

Детекция — это не классификация, с нуля писать тяжело, куча нюансов, море мистических параметров, которые авторы подбирали месяцами, так что обычно берется чужой код и адаптируется под свои данные. Существует много различных фреймворков для работы с нейронными сетями, у каждого свои плюсы и минусы. В начале работы над этой задачей наиболее комфортно я себя чувствовал с Keras, на котором мы с Серегой и затащили предыдущее соревнование. Сказано — сделано, берется реализация Faster RCNN на Keras и перебивается под наши данные. Запускается тренировка, что-то сходится, но это таааааак медленно. Как-то привыкаешь, что в других задачах через сеть летят десятки картинок в секунду, но тут все совсем не так. Сказывается и то, что Faster RCNN медленный и то, что Tensorflow не зашкаливает по производительности, плюс overhead, который идет от Keras, как от wrapper'a.

Что-то куда-то потренировалось, сошлось, предсказание, лидерборд и я десятый c результатом 0.49. То, что я в десятке — это хорошо, а вот то, что у ребят в первой тройке 0.8+, то есть разрыв достаточно большой — это не очень.

Keras — это хорошо и приятно, чистый код, понятная кодовая база, но он медленный и data parallelization осуществляется с большей болью, чем хочется. Всю зиму я работал над прошлой задачей, используя один GPU, а уже ближе к концу докупил второй. Два GPU — это очень удобно, как минимум, это позволяет проверять две идеи одновременно, да и если идей нет, не обязательно железу простаивать — на этих GPU всегда можно майнить криптовалюты, чем, скорее всего, и занимаются многие, кто решает задачки на Deep Learning, в свободное от тренировки моделей время.

В данном же случае идея одна — натренировать Faster RCNN. Тренируется сеть медленно, у меня два GPU, реализация на Keras небыстрая и мудреная, параллелить можно, но с болезненно. Сейчас ведется много работы над тем, чтобы можно было делать Data Parallelization на несколько GPU мизинцем левой ноги. Как я понимаю, на данный момент с этой задачей успешно справились разработчики mxnet и pytorch.

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

На этом техническую часть можно было бы и закончить. По сути, применение реализации Faster RCNN на mxnet моментально вывело в регион 0.8+. Тренировка производилась на crops размером 1000x1000, которые аугментировались поворотами на углы кратные 90 градусам + отражения (преобразования из D4 group). При предсказании, исходные картинки 2000x2000 резались на пересекающиеся куски размером 1000x1000. После этого применялся Non Maximum Supression для борьбы с эффектом, когда один и тот же бокс предсказан в различных тайлах. После этого у каждого бокса находился центр масс и это и шло в итоговое предсказание.

В определенный момент, несмотря на то, что везде в литературе утверждается, что Resnet 152 как feature extractor работает лучше, чем VGG 16, выяснилось, что общепринятая точка зрения на этой задаче на работает. Кто-то, на дурака, попробовал использовать VGG 16 и это заметно улучшило результат. Позже, в другом разговоре, bobutis, который в составле команды выиграл задачи по классификации рыбок и рака шейки матки, используя Faster RCNN, подтвердил, что на практике, VGG как feature extractor работает лучше.

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



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



На задаче про подсчет морских котиков подход через детекцию не зашел, как раз именно из-за плотной упаковки и народ решал через сегментацию, сопоставляя каждому котику гауссиану и сегментируя получившийся heatmap.
image


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



При этом, точность моей модели jaccard = 0.85, у ironabar, который на первом месте 0.87, но никак не 0.98-0.99. Навскидку, мы ошиблись примерно с 1200 машинками — а это очень много, особенно учитывая, что у меня сложилось стойкое впечатление, что на этой задаче и на этих данных сеть работает точнее, чем ручная разметка (первый раз с таким сталкиваюсь на практике).

Я думаю, что получилось вот что:

1. Многие классы тяжело отличать визуально, серая машина в тени может выглядеть как темная, а на солнце — как светлая. Синие и синеватые машинки тоже, совершенно запросто, могли упасть не в тот класс. И это сказывалось и при тренировке, и при предсказании.
2. Организаторы определили классы в достаточно странной манере — не, скажем, белый седан или хэтчбек, а белая длинная или короткая машина. При визуальной оценке, даже если отложить вопрос цвета в сторону, много пограничных случаев, которые не очевидно, к какому классу относить. Даже белые фургоны не всегда можно отличить от коротких белых машин.
3. Кабриолеты, несмотря на то, что сверху выглядят темными относятся к тому классу, которому соответствует основная расцветка, то есть, что бы сказал прохожий, если бы его спросили цвет машины. Это не проблема если бы таких кабриолетов в train было много, но число кабриолетов в Лондоне, скажем прямо, не зашкаливает.
5. Организаторы проявили креатив и решили упростить задачу для участников, то есть разбили случаи на простые и сложные, и ввели для этого какие-то свои внутренние правила, то есть если машина на краю и часть багажника выходит за край картинки они ее не учитывали ни в train, ни в test, что-то похожее можно сказать и про машины, которые наполовину скрыты деревьями. Как следствие, это добавило шума разметке, то есть сеть при тренировке щелкало за False Positive не по делу, уменьшая ее предсказательную силу и какие-то предсказанные машинки классифицировались как False Positive при вычислении jaccard на сайте соревнования.

Середина мая. Соревнование закончилось, на Public LB я третий, на Private — второй, организаторы пишут письмо в котором просят предоставить:
Please send the following information to general@datasciencechallenge.org:
Full name
Nationality
Telephone contact details
Whether you would be happy to provide an interview for the winner announcements
Passport details (scan/photo of details page with photo)
Proof of address (eg. scan/photo of a utility bill)
Bank account details (IBAN, Account Number and Sort Code)

В правилах написано, что если ты гражданин России — то денег дадут. Но уточнить с меня не убудет, я написал письмо, в котором английским по белому написал, что я гражданин России, живу в Сан Франциско, США, банк у меня американский и задаю логичный вопрос: „Призовые платить будем“? В ответ получаю email, который сводится к ожидаемому: „Нет, призовых не будет, ибо, несмотря на результат, по правилам, цветом паспорта ты не вышел“.

I'm sorry to say that due to your Russian citizenship you do not meet Clause 2.3b because Russia has a score below 37. As a result the company running the challenges is unable to award you any prize money as you do not meet the criteria that they need to follow due to their legal obligations in the UK.


Ответ был ожидаемым, так что обидно не было. Но! Сам факт наличия всех этих ограничений по месту жительства и по гражданству выбешивал с самого начала. Понятно, что в этом соревновании так уж получилось, но раз уж они позиционируют себя как очередную копию Kaggle, то очень бы хотелось щелкнуть по носу, чтобы увеличить шансы на то, что в будущем они будут думать, прежде чем запускать соревнования с нездоровыми правилами. Как щелкнуть — непонятно. Я написал что-то у них на форуме, добавил пару строчек к блог-посту на Kaggle про спутниковые снимки, хоть этот блог никто и не читает, но так, для очистки совести. Написал свой первый и единственный пост в twitter и гневный пост на facebook. Каюсь. Еще когда писал, я осознавал, что те, кто не в курсе деталей будут воспринимать текст как: „Подлые британцы в последний момент поменяли правила и кинули меня на деньги“.

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

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

Народ мониторил различные средства массовой информации и скидывал, что и где в новостях пролетело.

Со мной пытались связаться:
1. Russia Today — я отказался давать интервью на камеру, но ответил на пару вопросов по email. И этого им хватило на заметку.
2. Первый канал — атаковали всех моих русскоговорящих знакомых на Facebook и VK с просьбой помочь связаться со мной.
3. Пятый канал — пытались связаться со мной, не получилось; пытались связаться с моими родителями, не получилось; поехали в школу и взяли интервью у учителей. Я сильно надеюсь, что учителя не прощелкали клювами и выбили под это доп. финансирование.
4. Рен ТВ — хотели что-то из серии их стандартных програм про инопланетян и прочую экзотику, а именно, чтобы я стал центральным персонажем выпуска передачи „Осторожно: русские!“.
5. Комсомольская правда — выпустили не только электронную, но и бумажную версию.
6. Я попал на главную lenta.ru. Ненадолго, но тем не менее.
7. Какие-то совсем неизвестные мне каналы вроде „Царьград ТВ“ тоже попытались общаться, но они все пропадали в лавине всех, кто пытался со мной связаться.
8. Я сам не смотрел, но народ рассказывал, что тот факт, что я отказался работать на камеру не остановил телевизионщиков. Они все равно выпустили сюжеты, добавив мое фото в фон. Ну и, как водится, пригласили каких-то непонятных персонажей высказать их экспертную оценку на происходящее.

Общаться со всеми этими людьми большого желания не было. Цель моего поста на Facebook щелкнуть британцев, чтобы у них мозги пошустрее зашевелились и чтобы в будущем они создавали меньше дискриминационных соревнований, а не стать центральным персонажем новостных сюжетов вида: „Скандалы. Интриги. Расследования“. Я никогда не работал на камеру, плюс, у меня есть грешок — говорить то, что думаю, а на камеру так делать, наверное, не стоит. Да и то, что я скажу и то, что может получиться после монтажа — это две большие разницы, так что несмотря на свойственный мне природный авантюризм, вписываться в это я не стал.

На фоне всего этого, я не побоюсь слова, стада, очень приятно выделился Mail.Ru Group. Они мне прямым текстом написали: „Мы готовы выплатить деньги вместо британцев. Как с вами связаться?“. Как я уже писал, я не рассчитывал получить денег с этого соревнования, но сам подход мне понравился. Понятно, что для них это PR, причем достаточно дешевый, но при этом, на мой взгляд, это красивый ход. Этим подходом они высказали свое уважение, что очень хорошо смотрелось на контрасте со всеми остальными, для которых „дать нам интервью — большая честь“. Мы пообщались. Текст press release у них был готов и в течение 30 секунд после того, как я дал добро, он был опубликован. Аккуратно, без истерик, без „наших бьют“, все по делу, как и положено серьезной компании.

Разведка донесла, что в самом Mail.Ru Group это решение было встречено неоднозначно, что, в общем, логично. По факту мы имеем:

1. Какой то левый парень, который в Mail.Ru Group не работает.
2. В России не живет.
3. Участвовал в соревновании, которое проводила британская разведка.
4. По правилам денег получить не должен.
5. Вместо того, чтобы потратить эти деньги и послать работников, которые пашут как негры на плантациях с утра до вечера, на какую-нибудь конференцию, этому левому перцу выделяются несколько месячных зарплат типичного Data Scientist'a.

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

Деньги выделили, это приятно. Но брать их нельзя, они токсичные. Хотя опять же, скажем честно, если бы речь шла не о 12 тысячах фунтов, а о 120, я бы, наверное, взял. Или нет? Черт его знает. Но 1,200,000 точно бы взял.

С деньгами надо было что-то делать. Кто-то в канале #_random_flood предложил их пожертвовать. Эта идея мне понравилась. Очень сильно напрягает отсутствие финансирования в фундаментальной науке. С одной стороны, это логично, ведь по большому счету людям платят за сам факт своего существования, надеясь, что в один прекрасный момент будет какой-то прорыв, что-то большое. И примеров таких прорывов в истории более, чем достаточно, но финансирование, что в России, что за рубежом фундаментальной науки, прямо скажем, не фонтан. Так и созрела идея пожертвовать эти деньги на российскую науку. Куда жертвовать? Черт его знает. Я, когда в России учился, на гранты не подавал, да и давно это было, все десять раз поменялось. Кто больше поддерживает? Кто меньше пилит? Не знаю. Погуглил какие-то фонды, выбрал на дурака РФФИ. Попытки с ними связаться не увенчались успехом. Может у них и правда с деньгами все нормально и пожертвований они не принимают. А вот Российский Научный Фонд согласился деньги взять, правда уточнил, кто был организатором соревнований. Как ни странно, ответ “британская разведка” их вполне устроил.

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

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

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

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

Из забавного. Достаточно много девушек захотели добавиться в друзья на facebook или VK. Многие — очень симпатичные. Но при этом просто приходило извещение, о том, что кто-то захотел добавиться, без сообщения. Так скучно. А вот если бы какая-нибудь девушка написала вариацию на тему: „Владимир, вам, наверное, сейчас тяжело, такой стресс, приходите в гости на бокал вина, я и подружку приглашу“ — это было бы любопытнее, и, как минимум, я бы это интерпретировл, что девушка уверена в себе, умеет добиваться чего хочет, в общем не такая как все в хорошем смысле этого слова. Но максимум, что было: „Вы выглядите “cлегка» нетипично для программиста". Как-то даже без огонька.

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

Организаторы соревнований, несмотря на то, что приз платить не собирались попросили за свой счет поднять на амазоне EC2 instance, воспроизвести решение, написать документацию и сделать презентацию, и за это они обещали у себя на сайте упомянуть мое имя. Я вежливо отказался. Но во время обмена email'ами на эту тему, выяснилось, что журналисты, что наши, что британец, пытались с DSTL связаться и задавали вопросы, на которые у тех не было красивых ответов. Я не знаю, удался ли антидискриминационный щелчок по носу или нет, но хочется надеяться, что да.

Ближе к середине июня они написали email и сказали, что несмотря ни на что, мое второе место у меня никто не отнимает, и попросили мое фото.

Меня очень сильно подмывало отправить фото с медвежонком со словами: «А в свободное от машинного обучения время, я выращиваю медведя, будете еще раз дискриминировать — он вас съест».



Фото с мишкой я им отправил, правда формулировку смягчил и убрал из нее эмоции. В итоговом press release они меня упоминули, но косолапого показывать почему-то не стали.

Параллельно со всей этой историей на Kaggle стартовало соревнование с призом в $1,200,000 где по каким то соображениям обрезали китайцев, коллектив не одобрил, правила поменяли, и все вроде нормально.

Примерно месяц назад стартовало еще одно соревнование на Kaggle и тоже дискриминационное. Приз $1,500,000, но претендовать на него могут только граждане США и обладатели Green Card, то есть на этот раз за бортом остались не только Китай и Россия, а Евросоюз, Великобритания, Канада, Австралия, Израиль и все остальные, кого за бортом США обычно не оставляет. Серега на эту тему написал гневный текст на форуме, и судя по числу upvotes, коллектив с ним в большинстве своем солидарен. Я тоже отметился и тут же со мной связался какой-то американский журналист и даже опубликовал текст на эту тему.

Когда я связался с администратором этого нового соревнования и вежливо уточнил: «Как так получилось? Вы же всегда были за меритократию”. Он что-то витиевато финтил, но по сути ответ свелся к двум словам: „Мы продались“.

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

А что по знаниям? Знаний в Deep Learning в различных областях у меня сейчас много, как минимум их хватило вот на такую историю:

В начале мая, через Kaggle со мной связался рекрутер Tesla, который искал специалистов на позицию AI Researcher. Я согласился проинтервьюироваться на эту вакансию. Лихо прошел take home test, оба tech screen, onsite interview, хорошо пообщался с своим потенциальным непосредственным начальником Andrej Karpathy, оставалось пройти background check и чтобы Элон Маск одобрил мою заявку. И вот как раз на стадии background check я и срезался. Рекрутер сказал мне, что я нарушил Non Disclosure Agreement, и что где-то разболтал о процессе интервью, и что офера не будет. Это было неожиданно, но в более развернутом виде эту байку, я, наверное, расскажу, когда буду писать третью часть эпопеи про офисный планктон.

Отдельное спасибо Сергею Мушинскому и Владиславу Кассыму за помощь в работе над этой задачей, Сергею Белоусову, за то, что отвечал на мои глупые вопросы по Object Detection, без его помощи вряд ли я бы успел за месяц так хорошо разобраться в этой теме, а также Юлию Семенову за помощь в подготовке этого текста.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/330118/


Инструменты для прототипирования на Mac: сопоставительная характеристика

Пятница, 21 Июля 2017 г. 13:05 + в цитатник
С тем, что протипирование — обязательный этап работы над проектом, все уже смирились, благо рынок сейчас предлагает массу решений, помимо ручки и бумаги. Учитывая, что фунционал у большинства инструментов в общих чертах повторяется, выбирать «тот самый» — занятие неблагодарное. Тем не менее, задавшись целью подновить арсенал ПО для команды разработчиков, мы заставили себя через это пройти, и сегодня хотели бы предложить читателям мини-исследование с картинками, чтобы и они могли составить представление о некоторых популярных программах и сравнить результаты.



Всего мы отобрали пять претендентов из разных ценовых категорий — WireframSketcher, Flair Builder, Balsamiq Mockups, Make My App и Pencil Project. Из-за специфических требований рабочего процесса нас интересовали только варианты с возможностью работы оффлайн и доступной версией для Mac. Предпочтение отдавалось старым и зарекомендовавшим себя программам, однако в виде исключения взят был также молодой проект Make My App, с которым нам уже приходилось работать. Чтобы в полной мере оценить и сравнить возможности, мы выбрали 4 разных экрана из нашего оптимизатора для Mac MaCleaner 5 и попробовали воссоздать их средствами каждой из программ.



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

Wireframing Sketcher





Цена: 99 $ (5849 руб.) за годовую подписку, триал 14 дней
Распространение: через официальный сайт
Экспорт: PDF, HTML (онлайн), PNG
Платформы: Mac, Windows, Ubuntu

WireframeSketcher за свою немалую сравнительно с прочими вариантами цену предлагает весьма широкий ассортимент элементов, а в списке доступных шаблонов-макетов — бонусные веб-фреймворки и Windows Phone. Элементы разбиты на две группы: универсальные, которые, в свою очередь, подразделяются на тематические группы, и набор специфических для выбранной вами платформы. Из-за всего этого изобилия интерфейс и сама схема работы могут поначалу показаться несколько запутанными, но, когда вникнешь, программа оставляет приятное впечатление своей продуманностью в мелочах. Настройки элементов, к примеру, дают больше свободы и гибкости, чем в аналогах — можно не только выбирать цвета, шрифт и иконку, но также корректировать форму компонента и задавать нужное состояние элемента. Последнее, на наш взгляд, особенно ценно на фоне распространенной практики выносить в качестве отдельных элементов, что ограничивает возможности и перегружает библиотеку лишними вариантами. При растягивании или сжатии объекта на рабочей поверхности выдается окошечко с размерами. Ну и разумеется, очень полезна функция конвертирования в компонент, которая позволяет экономить время за счет создания мини-шаблонов для многократного использования. Макет на выходе получается стилизованный, утрированно «набросочный» — на любителя, но восприятию не препятствует.

Pencil





Цена: бесплатно
Распространение: через официальный сайт
Экспорт: PNG, PSD, SVG, ODT, HTML
Платформы: Mac, Windows, Ubuntu

Pencil, единственное без оговорок бесплатное решение в подборке, смотрится на удивление достойно: воображения он не потрясает, но с поставленной задачей справляется без особых проблем. Здесь также в наличии три стандартных набора — iOS, Android, Web — с базовыми элементами (но без дифференциации по моделям). Возможности кастомизации значительно урезаны, однако положение спасает то, что многие элементы представлены в нескольких вариациях. В упрек Pencil можно поставить не слишком удобную навигацию — группировка объектов внутри библиотеки производится то по типу элементов, то по платформе, да и расположение групп не назовешь логичным. Смущает и полное отсутствие разметки на рабочем пространстве. Зато в плане форматов экспорта Pencil однозначный победитель: помимо обычных PNG и PDF, пользователю предложат обратить свой макет и веб-страницу, и в SVG файл, и даже в текстовый документ.

FlairBuilder





Цена: 99 $ (5849 руб.), триал 15 дней
Распространение: через официальный сайт
Экспорт: PNG, HTML
Платформы: Mobile, Tablet, Web

В интерфейсе FlairBuilder явно сбился баланс между минимализмом и интуитивностью: о существовании многих возможностей приходится буквально догадываться, так что на первый взгляд программа может показаться бедноватой в плане функций. «Стартовый» список элементов весьма ограничен, дополнительные, из коллекций Bootstrap 3 и Material Design, открываются в отдельном окне, что несколько затрудняет навигацию и управление. Форматы для экспорта также представлены скромно: нет даже классического, всеми востребованного PDF. Зато пользователю предлагается беспрецедентно широкий выбор канвасов для разных моделей девайсов (правда, без соответствующих пакетов кастомизированных объектов). Интересной особенностью программы является то, что тип и модель девайса не задаются фиксированно в пределах проекта — их можно поменять в любой момент, чтобы посмотреть, как ваш дизайн будет выглядеть на экране другого размера. Другой весомый плюс — то, насколько удобно и прозрачно выполнено все, что касается внутренней перелинковки страниц: сделать объект интерактивным и настроить параметры переходов немногим сложнее, чем выбрать цвет и шрифт.

Balsamiq Mockups





Цена: 89 $ (5277 р), триал 30 дней
Способ распространения: через официальный сайт
Экспорт: PDF, PNG, JSON
Поддержка платформ: браузерная версия, Mac, Windows клиент

Это, пожалуй, единственная программа, интерфейс которой не вызвал у нас никаких нареканий в процессе работы — все ясно, логично и удобно. Единственное: немного тесновато на рабочем поле, но его можно подогнать под свои нужды. Количество элементов в библиотеке и разнообразие настраиваемых параметров в целом сопоставимо с тем, что предлагает WireframeSketcher; интерактивность так же присутствует, хотя несколько уступает по уровню реализации функционалу FlairBuilder. Дифференциация по платформам минимальна: представлены базовые типы экранов (смартфон, iPhone, iPad, web-экран), особая категория элементов выделяется только для iOS-устройств, да и та насчитывает меньше десятка объектов. Упоминания заслуживают и пара встроенных хитростей, которые защищают разработчика от самого себя: возможность восстановления удаленных проектов и автоматическое сохранение всех изменений в мокапе. Наконец, список форматов экспорта включает все необходимое и JSON вдобавок. В целом, то, что Balsamiq Mockups пользуется большой популярностью в дев-сообществе, совершенно не удивляет — это приемлемая альтернатива WireframeSketcher по более доступной цене и с доработанным интерфейсом.

Make My App





Цена: 29, 99 $ (2290 р ) + есть бесплатная версия
Распространение: через Mac App Store
Платформа: Mac
Экспорт: PNG

Make My App напоминает Pencil, не только своей бюджетностью, но и общим впечатлением простоты и прозрачности. Работать с ним удобно: все функции, за редким исключением, на виду, рабочее поле очень просторно и позволяет работать с несколькими экранами одновременно, интерфейс не перегружен. Большое преимущество Make My App — наличие в библиотеке шаблонов для разных типов девайсов: помимо джентльменского набора iPhone-iPad-десктоп-Android здесь представлены также экраны и элементы для Apple TV и Apple Watch, кроме того, экраны Android и iPhone представлены в нескольких вариантах, соответствующих разным моделям телефона. Сами наборы элементов среднего объема — особых изысков не найдешь, но все самое распространенное имеется; доступные для редактирования параметры также ограничены самым базовым набором. Бросилось в глаза и то, что выгрузка проекта возможна только в изображение. Наконец, как последний штрих верности Apple, Make My App — единственное в нашем списке решение, которое распространяется через официальный магазин и, соответственно, доступно только для Mac. Это стоит иметь в виду и тем, для кого важны соображения безопасности, и тем, кто ценит кроссплатфомернность и синхронизацию.

Добавим, что на маркете уже появилась обновленная версия продукта — Make My App 2. Мы ознакомились и с ней, но для сравнения выбрали первую часть. Обновленное решение дешевле и имеет некоторые весомые преимущества — более удобное управление, возможность группировки элементов, — однако на данный момент уступает исходнику в количестве и разнообразии элементов. Возможно, через несколько апдейтов ситуация изменится, но пока мы рекомендовали бы старую версию.

Обобщая все сказанное, мы должны сказать, что однозначный вывод «кто лучше» сделать сложно: слишком многое зависит от исходных целей и приоритетов разработчика. Для тех, кто использует в работе очень широкий круг элементов, вероятно, имеет смысл вложиться в покупку WireframerSketcher или Balsamiq Mockups. Тех, кто специализируется на макетах попроще, хватит и библиотек, которые предлагают Pencil или Make My App. На FlairBuilder и WireframerSketcher стоит обратить внимание тем, для кого важна интерактивность, а Make My App может стать хорошей находкой для команд, которые делают софт для широкого круга устройств. Не последнюю роль играет и интерфейс — мы не пожалели о своем решении попробовать каждый из вариантов «в деле»: это позволило, как минимум, оценить разницу во временных затратах на создание макета, в которую выливаются абстрактные «неудачные UX-решения» и «хорошая юзабилити». Надеемся, что несмотря на отсутствие универсального вердикта, наши наблюдения помогут в выборе и другим командам. Если у вас есть опыт работы с какой-нибудь из рассмотренных программ или другими решениями для прототипирования на Mac, с интересом послушаем в комментариях.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333832/


Метки:  

Безопасность в эпоху интернета вещей: истории взломов видеонянь, кардиостимуляторов и суперкаров

Пятница, 21 Июля 2017 г. 12:56 + в цитатник
Интернет вещей начинает играть все большую роль на IT-рынке и в жизни общества, а скоро и вовсе станет неотъемлемой частью нашей повседневности. Это подтверждается и рядом экспертных оценок. Так, по данным исследовательского агентства IDC, стоимость мирового рынка IoT уже в 2020 году превысит $7,1 трлн. Ожидается, что к этому моменту к сети будет подключено свыше 50 млрд устройств. Все это открывает огромные перспективы не только для бизнеса и конечных пользователей. В связи с развитием IoT-технологий тревогу начинают бить специалисты в сфере информационной безопасности. По их мнению, огромное количество плохо защищенных интернет-девайсов дает новые возможности и киберпреступникам, некоторым из которых уже удалось взломать ряд IoT-систем. Мы подобрали наиболее яркие случаи взломов устройств интернета вещей.

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

Еще одна нашумевшая кибератака случилась в октябре 2016 года, когда недоступным оказался целый ряд популярных ресурсов, сервисов и социальных сетей: Amazon, Pinterest, Twitter, Soundcloud, Spotify, Reddit, GitHub, Starbucks, CNN, The New York Time и др. Из-за атаки пострадали владельцы сайтов, работающих на серверах компании Dyn. Известно, что злоумышленники использовали программу Mirai, способную находить в сети незащищенные устройства интернета вещей, такие как роутеры, камеры слежения, цифровые видеомагнитофоны и т.д. В ботнет, согласно данным Dyn, были объединены свыше 100 000 подключенных устройств, многие из которых были уязвимы, поскольку работали без защиты паролей. Работа подвергшихся атаке сайтов была восстановлена спустя 14 часов.

Среди наиболее уязвимых перед ботнетами предприятий – медицинские учреждения и фармацевтические компании. Так, страдающий диабетом инженер и исследователь Джей Рэдклифф обнаружил уязвимость в работе инсулиновых помп компании Johnson & Johnson. По словам Рэдклиффа, через данную уязвимость злоумышленники могут по Wi-Fi с расстояния примерно семи метров получить контроль над устройством и спровоцировать передозировку инсулина в крови больного. Это, в свою очередь, способно привести к непоправимым последствиям для здоровья. Уязвимость была обнаружена и в системе Merlin@Home, обеспечивающей работу кардиостимуляторов. Выяснилось, что в нее можно отправить практически любую команду, даже о принудительной остановке сердца владельца устройства. Кроме того, эксперты отмечают, что хакерские атаки в медицине производятся для захвата персональных данных пациентов больниц с целью их дальнейшей продажи на черном рынке.

Умная бытовая техника также открывает простор для деятельности киберпреступников. Так, специалисты Schneider & Wulf обнаружили, что перед хакерскими атаками уязвимы профессиональные моечные машины Miele. Отмечается, что доступ к конфиденциальным данным через, казалось бы, безобидный бытовой прибор злоумышленник может получить, используя встроенный в машины веб-сервер. Первый же ботнет, работающий посредством домашней техники, был применен на рубеже 2013 и 2014 годов. Тогда, по данным исследователей Proofpoint, с холодильников, мультимедиа центров, роутеров и телевизоров конечным пользователям и компаниям по всему миру были отправлены сотни тысяч вредоносных писем.

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

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

Одним из наиболее известных сценариев использования концепции IoT в противоправных целях стал взлом видеоняни в одном из американских городов. Злоумышленник захватил удаленный контроль над устройством и в течение нескольких суток следил за трехлетним ребенком, разговаривая с ним по ночам. Родители не могли понять причин тревоги мальчика, пока не стали свидетелями происходящего, случайно заглянув в детскую комнату ночью. Аналогичная история произошла на территории Штатов в 2013 году, когда неизвестный через видеоняню установил слежение за кроваткой восьмимесячного младенца. Оба случая имели широкий резонанс и акцентировали внимание IT-сообщества на проблеме безопасности современных CCTV и веб-камер.

Еще один случай взлома IoT-системы, связанный с детьми, вовсе напоминает сценарий фильма ужасов. Речь о тестовой атаке на мягкие игрушки CloudPets. Игрушки данного бренда позволяют с мобильного телефона записать для ребенка сообщение, по Bluetooth передать его на встроенный динамик и воспроизвести при нажатии на него. Проникнув в базу данных CloudPets, хакеры получили доступ не только к самим игрушкам и функции записи аудио, но и к 800 тысячам аккаунтов и персональным данным пользователей.
Уязвимыми перед IoT-ботнетами оказались даже ультрасовременные высокотехнологичные электромобили Tesla. Исследователи Keen Security Lab удаленно взломали модель Tesla Model S через встроенный браузер. По Wi-Fi они взяли в свои руки управление транспортным средством в режимах езды и парковки. При этом хакеры отметили, что таким образом могли бы осуществить взлом любого из автомобилей производителя.

Несмотря на то, что интернет вещей требует от участников IT-рынка еще большего внимания к защите данных, объем трафика, поступающий от подключенных устройств, стремительно растет. Ожидается, что к 2020 году количество M2M-соединений в мире вырастет до 12,2 млрд. При чем почти половину из них составят девайсы систем умных домов, которые, несмотря на единичные случаи взломов, уже сегодня помогают пользователям в решении многих повседневных задач – от удаленного управления бытовой техникой до контроля систем отопления и освещения. Пока лучшие специалисты отрасли и правительственные структуры работают над протоколами кибербезопасности интернета вещей, появляется все больше новых сценариев использования IoT-технологий, а вместе с ними – и новые возможности для каждой компании и каждого человека.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333850/


[Перевод] В чём сила Redux?

Пятница, 21 Июля 2017 г. 12:56 + в цитатник

image


Это перевод статьи "What’s So Great About Redux?" (автор Justin Falcone), которая мне показалась весьма приятной и интересной для прочтения, enjoy!


Redux мастерски справляется со сложными взаимодействиями состояний, которые трудно передать с помощью состояния компонента React. По сути, это система передачи сообщений, которая встречается и в объектно-ориентированном программировании, но она не встроена непосредственно в язык, а реализована в виде библиотеки. Подобно ООП, Redux переводит контроль от вызывающего объекта к получателю — интерфейс не управляет состоянием напрямую, а передает ему сообщение для обработки.


В этом плане хранилище в Redux — это объект, редюсеры — это обработчики методов, а действия — это сообщения. Вызов store.dispatch({ type:"foo", payload:"bar" }) равносилен store.send(:foo, "bar") в Ruby. Middleware используется почти таким же образом, как в аспектно-ориентированном программировании (например, before_action в Rails), а с помощью connect в react-redux осуществляется внедрение зависимости.


Какие преимущества даёт такой подход?


  • Благодаря инверсии контроля, упомянутой выше, исчезает необходимость обновлять пользовательский интерфейс, как только меняется имплементация смены состояний. Добавлять такие сложные функции, как логирование, отмена действия или даже time-travel debugging, становится проще простого. Интеграционные тесты сводятся лишь к тому, чтобы проверить, отправляется ли правильное действие, а для всего остального достаточно юнит-тестов.
  • Состояние компонентов в React слишком неповоротливо для работы со сквозной функциональностью, которая затрагивает многие модули приложения, как, например, информация о пользователе или оповещения. Как раз для этого в Redux есть дерево состояний, независимое от пользовательского интерфейса. К тому же, при обработкe состояния вне интерфейса легче поддерживать постоянство, ведь сериализация в localStorage или URL проводится в единственном месте.
  • Редюсеры дают огромную свободу в работе с действиями, которые можно сочетать, отправлять одновременно и даже обрабатывать в стиле method_missing.

Но все эти случаи особые. Что же насчёт более простых сценариев?

Как раз здесь у нас проблемы.


  • Actions можно рассматривать как сложные переходы между состояниями, но в основном они лишь задают одно значение. В приложениях, сделанных на Redux, зачастую накапливается множество таких простых actions, и это явно напоминает Java с написанием функций сеттеров вручную.
  • Один и тот же фрагмент состояния можно было бы использовать по всему приложению, но в большинстве случаев он относится к одной определенной части интерфейса. Перенос состояния из компонентов в хранилище Redux — это просто дополнительное перенаправление без должного уровня абстракции.
  • Функции-редюсеры могли бы справиться с самыми замысловатыми задачами метапрограммирования, но обычно сводятся к примитивной диспетчеризации action согласно его типу. Это не проблема для таких языков, как Elm или Erlang, которые отличаются лаконичным и выразительным синтаксисом pattern matching, но в Javascript приходится иметь дело с громоздкими конструкциями switch.

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


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


Получается, лучше сторониться Redux в обычных случаях и приберечь его для особенных?


Как раз такой совет вам даст команда Redux — и я говорю то же самое своим коллегам: не беритесь за него до тех пор, пока setState не начнёт совсем выходить из-под контроля. Но даже я сам не следую собственным правилам, потому что всегда можно найти повод использовать Redux. Может быть, у вас есть много actions вроде set_$foo, при этом с каждым присвоением значения обновляется URL или сбрасывается ещё какое-нибудь промежуточное значение. Может, у вас установлено чёткое однозначное соответствие между состоянием и пользовательским интерфейсом, но вам требуется логирование или отмена действий.


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


Что же делать в таком случае?


К счастью, Redux достаточно гибкий, чтобы подключить к нему сторонние библиотеки для работы с простыми вещами — тaкие, как Jumpstart (https://github.com/jumpsuit/jumpstate). Поясню: я не считаю, что Redux нельзя использовать для низкоуровневых задач. Просто если работа над ними отдаётся сторонним библиотекам, это усложняет понимание, и по закону тривиальности время тратится на мелочи, потому что каждому пользователю в итоге приходится строить собственный фреймворк по частям.


Некоторым такое по душе.


И я в их числе! Но это относится далеко не ко всем. Я большой поклонник Redux и использую его почти во всех проектах, но мне также нравится пробовать новые конфигурации webpack. Я не типичный пример пользователя. Создание собственных абстракций на основе Redux даёт мне новые возможности, но что могут дать абстракции, написанные каким-нибудь Senior-инженером, который не оставил никакой документации и уволился полгода назад?


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


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


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


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


Ты серьёзно собираешься объяснять монады посреди поста?


Монады — это распространённая в Haskell абстракция, которая используется для самых разных вычислений, например, при работе со списками или обработке ошибок, состояний, времени или ввода/вывода. Синтаксический сахар в виде do-нотации позволяет представлять последовательности операций над монадами в форме, похожей на императивный код, примерно как генераторы в JavaScript, которые делают асинхронный код похожим на синхронный.


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


Вторая проблема — это многословность, а значит, как минимум, визуальная сложность монад по сравнению с императивным подходом. Четко определенные опциональные типы вроде Maybe более безопасны, чем поиск подводных камней в виде null, но код с ними длиннее и несуразнее. Обработка ошибок с помощью типа Either выглядит понятнее, чем код, в котором где угодно может быть брошено исключение, но, согласимся, код с исключениями намного лаконичнее, чем постоянный возврат значений с Either. Что касается побочных эффектов в состоянии, вводе/выводе и т.д., то они и вовсе тривиальны в императивных языках. Любители функционального программирования (я в их числе) возразили бы, что работать с побочными эффектами в функциональных языках очень легко, но вряд ли кого-то получится убедить, что какое бы то ни было программирование — это легко.


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


Так к чему же всё это?


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


Этим пониманием нелегко поделиться, потому что основные принципы сводятся к банальным аксиомам («избегайте побочных эффектов») или настолько абстрактны, что почти теряют смысл ((prevState, action) => nextState). Конкретные примеры не помогают: они только демонстрируют многословность Redux, но не показывают его выразительность.


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


И что ты предлагаешь?


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


По-моему, интересно сравнивать React и Redux: хоть React и гораздо сложнее Redux и его API намного шире, как ни странно, его легче изучать и использовать. Всё, что действительно необходимо в API React, — это функции React.createElement и ReactDOM.render , а с состоянием, жизненным циклом компонентов и даже с событиями DOM можно справиться по-другому. Включение всех этих функций в React сделало его сложнее, но при этом и лучше.


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


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


Вся ирония в том, что смысл существования Redux — это «Developer Experience»: Дэн разработал Redux, чтобы изучить и воспроизвести time-travel debugger как в Elm. Однако, по мере того, как идея приобретала собственную форму и превращалась, по факту, в объектно-ориентированную среду экосистемы React, удобство «DX» отошло на второй план и уступило гибкости конфигурации. Это вызвало расцвет экосистемы Redux, но там, где должен быть удобный фреймворк с активной поддержкой, пока зияет пустота. Готовы ли мы, сообщество Redux, заполнить её?

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

https://habrahabr.ru/post/333848/


Метки:  

Мониторинг работы производства веб-студии

Пятница, 21 Июля 2017 г. 12:41 + в цитатник


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

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

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

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

Показатели эффективности работы веб-студии


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

Общий план по доходам (ОПД). Данный показатель говорит о способности производства генерировать необходимый денежный поток.

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

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

Использование фонда рабочего времени (ФРВ). Данный показатель говорит об уровне дисциплины на производстве и эффективности организации труда, что является фундаментом для успешного бизнеса.

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

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

Использование ФРВ на коммерческие проекты (ФРВ$). С помощью данного показателя мы оцениваем целевое использование производственных ресурсов компании.

Определяя его, мы узнаем, какой процент от ФРВ ушел на коммерческие проекты. Для разделения часов (коммерческие/некоммерческие) мы используем трекеры в Redmine, по которым в дальнейшем легко делать срезы статистики.

Чтобы рассчитать показатель, разделим общее время по коммерческим проектам на время, отработанное по всем проектам, и умножим на 100%. В нашем случае ФРВ$ должен быть не менее 80%. Остальное время мы можем тратить на внутренние проекты и развитие.

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

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

Для расчета показателя делим среднее плановое время на среднее фактическое время и умножаем на 100%. Вполне нормально, если этот показатель будет меньше 100%. Главное — следить, чтобы он не становился меньше 70%, и стремиться к значению от 100% и более.

Рентабельность производственных активов (РПА). Фактически, это итоговая стоимость часа, по которой мы отработали месяц.

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

Рассчитывается показатель легко. Среднее время на проект (в часах) делим на среднюю стоимость проекта. Данные по затраченным часам берем из Redmine или любого другого task-менеджера, а стоимость разработки проекта — из договора.

Выполнение сроков. Заключительный и очень важный показатель для оценки – выполнение обязательств по срокам.

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

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

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

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

Как работать с показателями?


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

Добейтесь показателей:
  • Выполнение плана по доходам: > 100%
  • Использование ФРВ: > 70%
  • Использование ФРВ на коммерческие проекты: > 70%
  • Рентабельность производственных активов: > 90%
  • Выполнение нормативов: > 90%
  • Выполнение сроков: > 90%


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

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

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

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


Многие зададут вопрос: «А как же показатель качества?» Почему он не вошел в данную систему? Мы считаем, что это понятие относительное, и у каждой студии о нем свое представление. Для соблюдения технических показателей качества WebCanape мы разработали технологию производства сайтов для малого бизнеса, которая включает 120 параметров (плюс/минус). Этот чек-лист проверяет служба тестирования и менеджер проекта, прежде чем дать разрешение на выкладку сайта. Время, необходимое на проверку качества, закладывается в стоимость продукта и учитывается при расчете вышеперечисленных показателей.

Надеюсь, доступно рассказал про нашу систему контроля производства? В следующем материале напишу про градацию сотрудников и систему мотивации.

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

Команда WebCanape
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333842/


Метки:  

Фотографируем объекты в C#: хроника и сопоставление снимков, реконструкция состояния по снимку

Пятница, 21 Июля 2017 г. 12:38 + в цитатник
При разработке приложений часто встречается следующий сценарий: имеется некоторый набор данных доступных для просмотра и редактирования, например, это могут быть бизнес-сущности или настройки приложения. В момент, когда пользователь решает что-либо отредактировать, ему обычно становится доступна специальная форма с нужными полями ввода-вывода и другими элементами управления. Если он вносит какие-либо корректировки в данные, то при обработке формы хорошим тоном является запрос-подтверждение перед окончательным применением внесённых правок. В случае согласия пользователя данные обновляются в источнике и на интерфейсе, а при отмене используются старые значения.

Данная задача включает две подзадачи:

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

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

В статье мы рассмотрим обобщённый и очень лаконичный [размером в несколько строк кода!] подход к решению подобного рода задач, основанный на использовании библиотеки Replication Framework.

image


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



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



После подтверждения изменений выводится список всех найденных различий, если поднят флаг Show detailed changes, либо просто выводится сообщение об обнаружении хотя бы одного отличия [в реальных ситуациях иногда достаточно и такого поведения].



При отмене используются старые значения.



Теперь взглянем на код метода, который отвечает за данное поведение.

        private void Edit(T sourceEntry, bool useCopy, bool showChanges, ReplicationProfile replicationProfile)
        {
            var cache = new ReconstructionCache();
            var sourceSnapshot = sourceEntry.CreateSnapshot(cache, replicationProfile);

            var editableEntry = useCopy ? sourceSnapshot.ReplicateGraph() : sourceEntry;
            if (GetView(editableEntry).ShowDialog() == true)
            {
                var resultSnapshot = editableEntry.CreateSnapshot(null, replicationProfile);
                var changes = sourceSnapshot.Juxtapose(resultSnapshot)
                    .Where(j => j.State != Etalon.State.Identical);

                if (changes.Any())
                {
                    MessageBox.Show(showChanges
                        ? changes.Aggregate("", (x, y) => x + y + Environment.NewLine)
                        : "Any changes has been detected!");
                    UpdateSourceData(editableEntry);
                    UpdateUserInterface();
                }
                else MessageBox.Show("There are no any changes.");
            }
            else if (!useCopy) sourceSnapshot.ReconstructGraph(cache);
        }

Сущность Person
    public class Person : INotifyPropertyChanged
    {
        private int _id;
        private string _name;
        private string _birthday;
        private string _phone;
        private string _mail;

        public event PropertyChangedEventHandler PropertyChanged = (o, e) => { };

        private void Set(ref T target, T value, [CallerMemberName]string caller = "")
        {
            if (Equals(target, value)) return;
            target = value;
            PropertyChanged(this, new PropertyChangedEventArgs(caller));
        }

        public int Id
        {
            get => _id;
            set => Set(ref _id, value);
        }

        public string Name
        {
            get => _name;
            set => Set(ref _name, value);
        }

        public string Birthday
        {
            get => _birthday;
            set => Set(ref _birthday, value);
        }

        public string Phone
        {
            get => _phone;
            set => Set(ref _phone, value);
        }

        public string Mail
        {
            get => _mail;
            set => Set(ref _mail, value);
        }
    }


Профиль репликации для сущности Person
        private static readonly ReplicationProfile PersonRepicationProfile = new ReplicationProfile
        {
            MemberProviders = new List
            {
                new CoreMemberProviderForKeyValuePair(),
                new CoreMemberProvider(BindingFlags.Public | BindingFlags.Instance, Member.CanReadWrite),
            }
        };


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

Теперь обратим внимание на ключевые моменты. Работа библиотеки Replication Framework основана на использовании мгновенных снимков объектов в произвольные моменты времени, то есть с помощью метода-расширения Snapshot можно запросто сделать хронику мутаций [историю изменений] произвольного объекта или графа.

            var cache = new ReconstructionCache();
            var sourceSnapshot = sourceEntry.CreateSnapshot(cache, replicationProfile);
            ...
                var resultSnapshot = editableEntry.CreateSnapshot(null, replicationProfile);

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

                var changes = sourceSnapshot.Juxtapose(resultSnapshot)
                    .Where(j => j.State != Etalon.State.Identical);

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

            var editableEntry = useCopy ? sourceSnapshot.ReplicateGraph() : sourceEntry;

            var cache = new ReconstructionCache();
            var sourceSnapshot = sourceEntry.CreateSnapshot(cache, replicationProfile);
            ...
            else if (!useCopy) sourceSnapshot.ReconstructGraph(cache);


Более подробную информацию об использовании библиотеки вы можете найти в предыдущих публикациях:
1) Replication Framework • глубинное копирование и обобщённое сравнение связных графов объектов
2) Обобщённое копирование связных графов объектов в C# и нюансы их сериализации

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

За внешней простотой использования и хорошей функциональностью библиотеки кроется большая и кропотливая работа по её созданию и отладке, поэтому любая материальная поддержка и покупка коммерческой лицензии очень приветсвуются!

Вдохновения тебе, читатель!
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333846/


Многоярусный бэкап PostgreSQL с помощью Barman и синхронного переноса журналов транзакций

Пятница, 21 Июля 2017 г. 12:33 + в цитатник


В Яндекс.Деньгах хранится масса важной для комфортной работы пользователя информации. Настройки профилей и подписки на штрафы тоже нужно бэкапить, чем и занимается у нас связка из Barman Backup & Recovery for PostgreSQL и pg_receivexlog.


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


Как было, и почему это не круто


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


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

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


Делаем правильно


Итого, будем решать следующие задачи:


  1. Обеспечение доступности резервных копий при отказе ДЦ или бэкап-сервера.


  2. Недопущение потери транзакций при выходе мастер-сервера из строя.

Масштаб нашей задачи составляли 20 серверов PostgreSQL 9.5 (10 мастеров и 10 слейвов), обслуживающих 36 баз данных суммарным объемом около 3 ТБ. Но описываемый сценарий подойдет и для пары серверов с критичными БД.


С версии 2.1 в Barman Backup & Recovery появилась возможность записывать поток транзакций не только с мастера, но и со слейв-серверов (реплик).

Общая схема нового решения представлена ниже, она довольно незамысловата:


По одному серверу резервного копирования в каждом ДЦ, конфигурация у них общая (один из плюсов Barman).


Процесс конфигурации выглядит следующим образом:


1. Подключаемся к серверу БД и с помощью пакетного менеджера устанавливаем postgresql-9.5-pgespresso – расширение для интеграции Barman Backup & Recovery c PostgreSQL.
Все команды приводятся для Ubuntu, для других дистрибутивов могут быть отличия:


apt-get install postgresql-9.5-pgespresso

2. Устанавливаем расширение pg_espresso в PostgreSQL:


postgres@db1:5432 (postgres) # CREATE EXTENSION pgespresso

3. Теперь на сервере с Barman нужно создать файл, описывающий настройки резервного копирования для сервера db1 – db1.conf в каталоге /etc/barman.d/ со следующим содержимым:


[db1]
ssh_command = ssh postgres@db1
conninfo = host=pgdb1 user=postgres port=5432
backup_options = concurrent_backup ; позволяет выполнять бэкап с реплики при наличии расширения pg_espresso

archiver = off ; выключаем доставку логов через archive_command
streaming_archiver = on ; включаем доставку логов через механизм репликации
slot_name = barman ; имя слота репликации

4. Далее нужно создать слот репликации, чтобы гарантировать, что мастер не удалит журналы транзакций, которые еще не были получены репликой:


$ barman receive-wal --create-slot db1

5. И проверить, что Barman видит сервер и забирает с него журналы транзакций:


$ barman check db1

Если все команды выполнены правильно, то в результате выполнения команды проверки должно получиться нечто похожее:


Server db1:
        PostgreSQL: OK
        superuser: OK
        PostgreSQL streaming: OK
        wal_level: OK
        replication slot: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 7 backups, expected at least 7)
        ssh: OK (PostgreSQL server)
        pgespresso extension: OK
        pg_receivexlog: OK
        pg_receivexlog compatible: OK
        receive-wal running: OK
        archiver errors: OK

Теперь Barman будет забирать журналы и делать бэкапы с реплик. В бэкап попадают все базы PostgreSQL c профилями пользователей, историей платежей, подписками на штрафы, настройками аутентификации и т.п.


Отряд не заметил потери бойца


Напомню, что нулевое RPO при восстановлении нам очень важно, поэтому решили подстраховать Barman дополнительным механизмом – pg_receivexlog. Этот процесс находится на отдельном сервере – не на сервере с базой данных – и непрерывно переносит копии журналов транзакций из мастер-ноды в отдельное хранилище журналов транзакций, доступное для реплики. И так для каждого ДЦ отдельно.


Особенность механизма в том, что СУБД не подтвердит приложению запись данных в базу, пока не получит подтверждение от pg_receivexlog об успешном копировании транзакции.


Без этого сохранялась бы вероятность следующего сценария:


  1. Допустим, Иннокентий платит 100 рублей за сотовую связь, операция успешно проводится нашей платежной системой (ПС).


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


  3. Но так как перевод произошел прямо перед аварией, эта транзакция не попала в резервные копии и больше не отразится в истории операций по кошельку Иннокентия.

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


Теперь как настроить чудо механизм синхронного переноса логов:


1. Создаем слот для сборщика логов:


pg_receivexlog --create-slot -S pgreceiver --if-not-exists -h db1

2. Запускаем службы сбора логов с сервера PostgreSQL:


pg_receivexlog -S pgreceiver -d "host=db1 user=postgres application_name=logreceiver" -D /var/lib/postgresql/log/db1/ --verbose --synchronous

*-S: используемый слот репликации. Должен быть создан на первом шаге;*
*-d: строка подключения к базе;*
*-D: каталог, куда будут сохраняться журналы;*
*—synchronous: записывать данные в синхронном режиме;*

3. После запуска pg_receivexlog будет пытаться в синхронном режиме сохранять журналы транзакций в каталог. Таких сборщиков может быть несколько, по одному на сервер PostreSQL. Но чтобы синхронный режим заработал, нужно в настройках СУБД на мастер-ноде указать параметр в конфигурации PostgreSQL:


synchronous_standby_names = 'logreceiver, standby'

4. Но чтобы при отказе сервера со сборщиком логов мастер-нода могла продолжать обработку пользовательских транзакций, вторым сервером лучше указать реплику. На реплике в recovery.conf нужно указать, откуда брать журналы транзакций в случае недоступности мастер-ноды:


restore_command = 'scp postgres@logreceiver:/var/lib/postgresql/log/db1/%f* %p'

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


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

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

https://habrahabr.ru/post/333844/


Метки:  

Необходимость регулирования интернета вещей

Пятница, 21 Июля 2017 г. 12:07 + в цитатник


Сегодня Государственная Дума РФ в третьем чтении приняла закон о запрете обхода блокировок через VPN и анонимайзеры. Когда ждать запретов и регулирования в области интернета вещей? И есть ли вообще смысл что-либо там регулировать?

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

Так как количество вещей, которые могут быть подключены к Интернету, растет в геометрической последовательности с каждым годом, технологии Интернета вещей несомненно окажут существенное влияние на мировую экономику. Согласно прогнозу International Data Cooperation (IDC), рост объёма рынка Интернета вещей будет составлять 16,9%, что может потребовать четкого регуляторного вмешательства.



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



В 2015 году аналитики Hewlett Packard исследовали защищенность IoT-устройств и выяснили, что 70% IoT-устройств имели уязвимости в безопасности учетных данных, шифрование данных почти не применялось, наблюдались также проблемы с разрешением доступа. В 2016 году почти три четверти опрошенных компанией Accenture пользователей заявили, что знали о возможностях взлома IoT-девайсов. Вопрос безопасности в данной области крайне критичен, так как предполагается, что большинство устройств, которые мы подключаем к интернету, будут служить нам куда больше чем 2-3 года. В то же время, на сегодняшний день многие производители не предоставляют обновления программного обеспечения для IoT-устройств, что может быть губительным даже в тех случаях, когда безопасность была предусмотрена в изначальном ПО.

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

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

Однако уже в 2016 году стало известно, что Еврокомиссия планирует ввести обязательную сертификацию или другую аналогичную процедуру для устройств, подключаемых к интернету вещей. Что поддержали некоторые производители микросхем, такие как Infineon, NXP, принадлежащая Qualcomm, STMicroelectronics и Европейское агентство по сетевой и информационной безопасности (ENISA). Они так же выступили с предложением разработать и внедрить базовые стандарты кибербезопасности подключённых устройств.



Недавно предложенная инициатива Building a European data economy так же вносит вклад в создание единого европейского рынка для Интернета вещей. Данная инициатива предусматривает политики и правовые решения, касающиеся свободного потока данных через национальные границы, а так же вопросы ответственности в таких средах как Интернет вещей. Помимо политических инициатив ЕС выдвинула конкретные исследовательские и инновационные задачи в проходящей программе финансирования Horizon 2020.

В России же Федеральное агентство по техническому регулированию и метрологии так же в 2016 году сообщило о начале формирования технического комитета по стандартизации «Кибер-физические системы», который будет заниматься стандартизацией таких сфер, как «Интернет вещей» (Internet of things), «Умные города» (Smart cities), «Большие данные» (Big data) и «Умное производство» (Smart manufacturing). В рамках деятельности данного комитета будут приняты национальные стандарты, которые соответствуют находящимся на рассмотрении международным стандартам ИСО/МЭК.

Так же участники российской Ассоциации интернета вещей внесли проект стандарта радиопередачи в узкополосном спектре NarrowBand Fidelity (NB-FI) для Интернета вещей. Планируется вывести данный стандарт на международный уровень.



Стандарт Narrow Band Fidelity (NB-FI) позволяет IoT-устройствам совершать обмен данными на расстоянии до 10 км при работе устройства до 10 лет без подзарядки. Для работы стандарта Ассоциация намерена использовать частоту 868 МГц, которая не занята другими технологиями и не требует разрешений для работы. Кроме того, Ассоциация согласовала расширение частот «интернета вещей» с Министерством обороны, ФСО и ФСБ.

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

https://habrahabr.ru/post/333840/


Без заголовка

Пятница, 21 Июля 2017 г. 12:00 + в цитатник


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


Готовые варианты


До изобретения велосипеда немного расскажу (или напомню) о готовых продуктах, предназначенных для перехвата сетевого трафика и последующего анализа. Вот основные программы, занимающиеся анализом трафика.


Tcpdump. Консольный и довольно известный сниффер для UNIX-систем.

Пингуем 8.8.8.8 и любуемся выводом tcpdump.


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

Продолжаем пинговать 8.8.8.8, но смотрим уже с помощью Wireshark.


Microsoft Message Analyzer (в прошлом Microsoft Network Monitor). Помимо функций сниффера, может анализировать сообщения программ и устройств, системные события.

Возможностей много, поэтому и интерфейс громоздкий.


Наконец, WinDump. Аналог tcpdump, но для Windows.


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


  1. В маршрутизаторах Mikrotik сниффер стоит искать в Tools - Packet Sniffer.

    Сниффер на Микротике.
    Любопытной возможностью является настройка потока (Streaming), позволяющая отправлять трафик с роутера прямо на компьютер с запущенным Wireshark.


  2. В маршрутизаторах D-link DFL также присутствует сниффер. Искать в Tools - Packet Capture.

    Сниффер в D-Link DFL.

К сожалению, через GUI пакеты не посмотреть, но можно скачать дамп трафика в формате .cap и открывать привычным анализатором Wireshark или Microsoft Message Analyzer.


А теперь представим, что сниффер почему-то вот прямо сейчас не скачать, а инструмент нужен - приступим к упражнениям с PowerShell.


«Мощная оболочка» спешит на помощь


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


Ловить пакеты будем из командной строки с использованием набора командлетов NetEventPacketCapture в Windows 8.1/2012R2. Для примера представим, что на компьютере с именем REIKO пользователь работает в терминальной сессии - подглядим за его работой при помощи PowerShell.


Для начала создадим подключение к компьютеру пользователя:


$Cim = New-CimSession -ComputerName 'REIKO'

После этого создадим сессию обработчика событий:


New-NetEventSession -Name "Session01" -CimSession $Cim -LocalFilePath "C:\Windows\Temp\Trace.etl" -CaptureMode SaveToFile

И добавим поставщика событий:


Add-NetEventProvider -CimSession $Cim -Name 'Microsoft-Windows-TCPIP' -SessionName "Session01"

Посмотреть всех возможных поставщиков можно командой logman query providers.

После чего осталось запустить трассировку:


Start-NetEventSession -Name "Session01" -CimSession $Cim

Для остановки достаточно в той же команде заменить Start на Stop.


Результаты можно посмотреть следующей командой:


Get-WinEvent -Path "\\REIKO\C$\Windows\Temp\Trace.etl" -Oldest


По результатам трассировки видно, что с компьютера не только работают на терминальном сервере, но и на самом компьютере кто-то сидит в локальной терминальной сессии.


Для автоматизации процессов такой трассировки (привет коллегам из ИБ) системный администратор Dan Franciscus написал скрипт Invoke-PSTrace.


С листингом скрипта можно ознакомиться под спойлером.
#requires -Modules NetEventPacketCapture

function Invoke-PSTrace {
[OutputType([System.Diagnostics.Eventing.Reader.EventLogRecord])]
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true)]
        [string]$ComputerName,
        [switch]$OpenWithMessageAnalyzer,
        [pscredential]$Credential
    )  
        DynamicParam 
        {
            $ParameterName = 'ETWProvider' 
            $RuntimeParameterDictionary = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary
            $AttributeCollection = New-Object System.Collections.ObjectModel.Collection[System.Attribute]
            $ParameterAttribute = New-Object System.Management.Automation.ParameterAttribute
            $ParameterAttribute.Mandatory = $true
            $AttributeCollection.Add($ParameterAttribute)
            $arrSet = logman query providers | Foreach-Object {$_.split('{')[0].trimend()} | Select-Object -Skip 3 | Select-Object -SkipLast 2
            $ValidateSetAttribute = New-Object System.Management.Automation.ValidateSetAttribute($arrSet)
            $AttributeCollection.Add($ValidateSetAttribute)
            $RuntimeParameter = New-Object System.Management.Automation.RuntimeDefinedParameter($ParameterName, [string], $AttributeCollection)
            $RuntimeParameterDictionary.Add($ParameterName, $RuntimeParameter)
            return $RuntimeParameterDictionary
        }

    begin 
    {
        $ETWProvider = $PsBoundParameters[$ParameterName]
    }

    process 
    {
        #Remove any existing sessions
        Get-CimSession -ComputerName $ComputerName -ErrorAction SilentlyContinue | Remove-CimSession -Confirm:$False
        Get-NetEventSession -Name "Session1" -ErrorAction SilentlyContinue | Remove-NetEventSession -Confirm:$False
        Remove-Item -Path "C:\Windows\Temp\$ComputerName-Trace.etl" -Force -Confirm:$False -ErrorAction SilentlyContinue
        #Create new session

        try 
        {
            $Cim = New-CimSession -ComputerName $ComputerName -Credential $Credential -ErrorAction Stop
            New-NetEventSession -Name "Session1" -CimSession $Cim -LocalFilePath "C:\Windows\Temp\$ComputerName-Trace.etl" -ErrorAction Stop -CaptureMode SaveToFile | Out-Null
        }

        catch 
        {
            Write-Error $_
            Break
        }    

        Add-NetEventProvider -CimSession $Cim -Name $ETWProvider -SessionName "Session1" | Out-Null
        Start-NetEventSession -Name "Session1" -CimSession $Cim | Out-Null

        if (Get-NetEventSession -CimSession $Cim)
        {
            Read-Host 'Press enter to stop trace' | Out-Null
        }

        Stop-NetEventSession -Name 'Session1' -CimSession $Cim   
        Remove-NetEventProvider -Name $ETWProvider -CimSession $Cim  
        Remove-NetEventSession -Name 'Session1' -CimSession $Cim  
        Remove-CimSession -CimSession $Cim -Confirm:$False 

        if ($ComputerName -ne 'LocalHost')
        {
            Copy-Item -Path "\\$ComputerName\C$\Windows\Temp\$ComputerName-trace.etl" -Destination 'C:\Windows\Temp' -Force
        }

        Get-CimSession -ComputerName $ComputerName -ErrorAction SilentlyContinue | Remove-CimSession -Confirm:$False

        if ($OpenWithMessageAnalyzer)
        {
             Start-Process -FilePath 'C:\Program Files\Microsoft Message Analyzer\MessageAnalyzer.exe' -ArgumentList "C:\Windows\Temp\$ComputerName-trace.etl"
        }

        else 
        {
             Get-WinEvent -Path "C:\Windows\Temp\$ComputerName-trace.etl" -Oldest 
        }
    }
}

При запуске скрипта можно задать имя удаленной машины, поставщика событий, а при необходимости открыть трассировку в Microsoft Message Analyzer.



Пример работы скрипта.


Поскольку в PowerShell можно использовать инструментарий .NET, еще до появления набора командлетов NetEventPacketCapture в сообществе появился скрипт сниффера Get-Packet. Ознакомиться с одним из вариантов доработанного скрипта можно в блоге у автора, я же приведу пример его работы.



Пингуем и смотрим трафик скриптом PowerShell.


Из-за использования методов .NET работает значительно быстрее командлетов, но создать его «на коленке» и без доступа к интернету будет непросто. Тем не менее это неплохая альтернатива проприетарным программам.


Старичок CMD тоже не промах


Если вы также любите батники, как их люблю я, то можете заинтересоваться трассировкой без всяких PowerShell, средствами привычного netsh.exe. Помимо создания можно ещё и сконвертировать файл трассировки из формата .etl в удобные форматы вроде .txt и .html.


Конечно, батники уходят в прошлое, но все же спрячу под спойлер аналогичный скрипт для CMD.
@echo off

rem запускаем трассировку
netsh trace start InternetClient provider=Microsoft-Windows-TCPIP level=5 tracefile=trace.etl > nul
rem ждем 5 секунд
timeout 5 > nul

rem останавливаем трассировку
netsh trace stop > nul

rem конвертируем файл .etl в удобный .txt, чтоб не открывать Microsoft Message Analyzer
netsh trace convert input=trace.etl output=trace.txt dump=txt > nul

rem посмотрим, кто у нас занимается RDP
type trace.txt | findstr "3389"

rem убираем временные файлы
del trace*


Результат работы скрипта.


Подробнее с синтаксисом netsh для сбора трассировки можно ознакомится в документации Microsoft.


С CMD самое большое неудобство в том, что без дополнительных утилит не так просто выполнить запуск скрипта, поэтому PsExec.exe или команду WMIC стоит держать под рукой:


wmic /user:"username" /password:"password" /node:"computer" process call create "sniffer.bat > log.txt"

В качестве «домашнего задания» предлагаю читателям запустить сбор трассировки на файловом сервере или сервере печати с помощью поставщика событий Microsoft-Windows-SMBServer. Особенно интересные результаты выходят, если с сервером работают как клиенты SMB v1, так и SMB v2 и старше.

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

https://habrahabr.ru/post/333838/


Метки:  

Отчёт Центра мониторинга информационной безопасности за II квартал 2017 года

Пятница, 21 Июля 2017 г. 10:40 + в цитатник
В отчёте мы собрали сводную статистику по зафиксированным во II квартале 2017 года нашим корпоративным Центром мониторинга событиям и инцидентам информационной безопасности.

За три месяца сенсоры зафиксировали и проанализировали 254 453 172 события информационной безопасности и выявили 144 инцидента.

За предыдущий I квартал 2017 года Центр мониторинга зафиксировал 137 873 416 событий ИБ и 98 инцидентов.

Результаты мониторинга


В период с 1 апреля по 30 июня 2017 года сотрудники Центра мониторинга контролировали информационные системы нескольких организаций с общим числом подключённых узлов около 15 500 (рабочие места, веб, почта, файловые хранилища, VPN и т.д.).

image

Мы видим значительный рост количества зафиксированных событий (+85%) и инцидентов (+47%). При этом количество узлов на мониторинге росло медленнее, прирост за II кв. 2017 года составил около 30%.

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

image

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

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

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

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

«Трояны и вирусы» — события, свидетельствующие о факте заражения контролируемых ресурсов вирусами или активности вредоносного ПО.

«DDoS» — события, свидетельствующие о попытках осуществления распределённых атак на отказ в обслуживании.

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

Среди выявленных 144 инцидентов:
Класс
инцидента
Высокая критичность
Средняя критичность
Низкая критичность
Всего инцидентов
Доля инцидентов
Вредоносное ПО
8
21
14
43
30%
Атака
4
5
3
12
8%
Подбор паролей
11
8
4
23
16%
Нарушение политики ИБ
2
6
13
21
15%
Эксплуатация уязвимостей
12
21
7
40
28%
DDoS
3
2
5
3%
Всего:
40
63
41
144
100,0%


image

В I кв. 2017 года ситуация была немного другой:

image

Соотношение типов зарегистрированных инцидентов ИБ в течение года менялось следующим образом:
Доля инцидентов, %
Класс инцидента III кв. 2016 IV кв. 2016 I кв. 2017 II кв. 2017
Вредоносное ПО 42,8 51 52 30
DDoS 14,3 1,9 3 3
Нарушение политики ИБ 14,3 13,2 9 15
Подбор паролей 23,8 13,2 14 16
Атака 11,3 16 8
Эксплуатация уязвимостей 4,8 9,4 6 28

Недавняя публикация уязвимостей, обнаруженных зарубежными правительственными агентствами, и эксплойтов на них не прошла незамеченной в нашем Центре мониторинга. Мы увидели отчётливый рост количества попыток эксплуатации. К счастью, к моменту масштабных атак мы уже написали сигнатуры для сетевых средств защиты и «ловили» эти атаки на ранней стадии, поэтому удалось избежать большинства ОЧЕНЬ серьёзных последствий.

В I квартале 2017 года мы видели попытки некоторых сотрудников организаций, подключённых к Центру мониторинга, майнить криптовалюты на корпоративных ИТ-ресурсах. К сожалению, высокий курс bitcoin и ethereum провоцирует продолжать пробовать это делать. Такие инциденты попали в «Нарушение политики».

Распределение инцидентов ИБ относительно дней недели во II квартале 2017 года:

image

Распределение инцидентов ИБ за II квартал 2017 года:

image

В этот раз наблюдаем достаточно ровную картину, без резких пиков.

ТОП источников


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

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

image

ТОП подверженных инцидентам сегментов


Ситуация по целям атак немного изменилась по сравнению с предыдущим периодом. В I кв. 2017 года больше половины всех атак было направлено на пользовательские рабочие места.

image

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

image

Наиболее часто используемые техники воздействия на системы, повлёкшие инцидент ИБ


Угроза Техника воздействия
Подбор паролей Попытки подбора аутентификационной информации для доступа к сервисам и ресурсам контролируемых организаций — RDP, SSH, SMB, DB, Web.
Нарушение политик ИБ Нарушение пользователями/администраторами контролируемых ресурсов требований политик ИБ в части использования устаревших версий или недоверенного ПО. Данное ПО может быть использовано злоумышленником для атаки путём эксплуатации уязвимости. Также использование ресурсов компании для получения собственной выгоды (майнинг bitcoin/ethereum). Использование торрент-трекеров.
Вредоносное ПО Заражение конечной системы, распространение вируса по локальной сети, отключение/блокировка служб, препятствующих распространению вируса, попытки проведения иных атак внутри сети для получения критичной информации и передачи на командные серверы.
Попытки эксплуатации уязвимостей Использование недостатков в системе для нарушения КЦД и воздействие на правильную работу системы. Уязвимость может быть результатом ошибок программирования, недостатков, допущенных при проектировании системы, ошибки конфигурации, отсутствия обновлений. Некоторые уязвимости известны только теоретически, другие же активно используются и имеют известные эксплойты.

Печатная версия отчёта на сайте amonitoring.ru.

Отчёт за I кв. 2017 года.

Благодарю Baymaxx за помощь в подготовке отчёта. Да, ему можно верить, если он вам ответит в комментариях.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333810/


[Перевод] Дизайн для пальцев, касаний и людей

Пятница, 21 Июля 2017 г. 10:32 + в цитатник


Перевод статьи Стивена Хубера.

Многие читают и ссылаются на статью 2013 года “How Do Users Really Hold Mobile Devices?”. Но с тех пор было проведено немало исследований и экспериментов по использованию разных методик в реальных продуктах, написано много других статей. За прошедшие годы стало больше известно о том, как люди удерживают свои смартфоны и планшеты, как они взаимодействуют с ними тактильно. И всех этих, зачастую неожиданных данных, нет в старой статье 2013 года. И это её главная проблема. В ней были сделаны предположения, основанные на наблюдениях за использованием десктопов, на стандартах для более старых способов взаимодействия, а также на казусных ситуациях и неверно интерпретированных данных. Но благодаря дальнейшим исследованиям и более качественному анализу удалось отвергнуть ошибочные предположения и докопаться до истины.

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

Доверяйте данным, а не своим «чувствам»


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

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

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

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

Технология касания


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

Световое перо


Сначала появилось световое перо. Оно было предшественником мыши в качестве указательного устройства для компьютеров — и до сих пор в строю. Сегодня мы называем их стилусами, но в начале их называли световыми перьями (light pens). Первым производственным приложением, использовавшим стилус, было SAGE — гигантская сетевая система Semi-Automatic Ground Environment для американских ВВС.

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

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

Инфракрасные сенсорные экраны


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

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

Резистивные сенсорные экраны


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

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

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

Емкостные сенсорные экраны


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

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

Упрощённая схема слоёв емкостного экрана:



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

При определённом угле можно заметить вертикальные емкостные датчики:



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

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

Демонстрация неточной интерпретации касаний:



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

Размер, давление и пятна контакта


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

Пятно контакта:



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

Поскольку старые стандарты для сенсорных экранов основаны на размере пальца, то они больше неактуальны. Например, во времена разработки стандартов ISO на рынке доминировала инфракрасная технология, которая распознавала палец человека, поэтому стандарты определяют, что целевые экранные объекты (touch-target) должны быть размером 22 х 22 мм, чтобы вместить большие пальцы. Авторы не проводили больших исследований точности указания.

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

Устаревшие стандарты


ISO не единственная группа, продвигающая устаревшие стандарты. Все разработчики мобильных ОС и некоторые из OEM продвигают свои собственные размеры целевых экранных объектов. Nokia позаимствовала одну из версий старых стандартов и никогда их не обновляла. Microsoft в этом отношении чуть лучше, предлагает делать промежутки между целевыми объектами, но в целом проблемой являются достаточно малые размеры самих объектов. Google и Apple используют другие размеры, которые, похоже, основаны на удобстве работы с платформами, а не на человеческих факторах. Любой стандарт, использующий пиксели вместо физических измерений, бесполезен, потому что даже независимые от устройств пиксели могут сильно варьироваться от экрана к экрану, и они не имеют никакого отношения к размерам человеческого тела.

Устарели не только размеры целевых экранных объектов, но и многие другие стандарты, относящиеся к мобильным устройствам. Можно сослаться на стандарты W3C WCAG, потому что они просты, понятны и универсальны. Но они не применимы к мобильной сфере. W3C так или иначе игнорирует мобильные устройства, особенно когда речь заходит о стандартах доступности. Они полагают, что все компьютеры — это десктопы с клавиатурой и мышью, расположенные на расстоянии руки от пользовательских глаз. Их стандарты определяют размеры пикселей на основе старого стандарта 72/96 ppi (pixels per inch), никак не нормируя угол, яркость, расстояние и другие аспекты, с которыми приходится сталкиваться мобильным пользователям.

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

Определение новых стандартов


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

Некоторое время назад нами были проведены наблюдения за поведением пользователей, примерно 1300 человек из разных стран. Как они пользуются своими телефонами на улице, на остановках, в поездах, аэропортах, в кафе. Также было проведено метаисследование десятков отчётов об использовании касаний и жестов из ACM Digital Library. В одном из них, например, содержались данные о 120 млн событий, так что статистика вполне достаточная. Дополнительно было проведено 651 наблюдение в школах, офисах и домах, благодаря чему были получены данные о планшетах и типах пользователей. Были проведены удалённые немодерируемые тестирования, как люди используют касания в зависимости от типа ввода и выполняемых задач.
Сегодня к нам приходят данные из разных стран и по разным устройствам. Исследователи собирают информацию разными способами, в разных ситуациях, применительно к разным сценариям использования.

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

Наука касания


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

Хорошо известная и ошибочная схема:



Но согласно полевым исследованиям, люди постоянно используют кнопку «Назад». Фактически это самая востребованная кнопка на экране, даже когда она находится в верхнем правом углу. Так что мы знаем о большом пальце? Начнём с основ.

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



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

Базовые наблюдения за касаниями


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

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



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

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

  • 75% пользователей касаются экрана только одним большим пальцем.
  • Меньше 50% держат телефон одной рукой.
  • 36% обхватывают телефоны, используя вторую руку, чтобы было стабильнее удерживать и удобнее дотягиваться до разных областей экрана.
  • 10% держат телефон в одной руке и нажимают пальцем другой.

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

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



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

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



В этом исследовании участвовали десятки пользователей. И многие из нажатий были далеки от центра мишени. Некоторые в неё вообще не попадали. Промахи — ключевой момент. Размеры объектов никогда не будут идеальны, так что регистрируйте все нажатия. Промахи будут постоянно, так что просто определите допустимое количество и живите с этим. В предложенные выше размеры целевых объектов укладывается лишь 95% нажатий.

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

Дружественный к касаниям информационный дизайн


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

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

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



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

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

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

https://habrahabr.ru/post/333818/


Метки:  

Первенцы МЕГА Accelerator: год свободного полета

Пятница, 21 Июля 2017 г. 10:24 + в цитатник


Знакомьтесь — SensArt и Texel — два наших выпускника, успешно завершивших первый  МЕГА Accelerator. Год назад мы искали и стремились реализовать инновационные идеи по улучшению покупательского опыта гостей МЕГИ в торговом центре и за его пределами. Эти проекты оказались интересными и перспективными, а один из них даже забрал главный приз. Сейчас мы хотим рассказать о том, как изменился их бизнес и с чем они готовятся штурмовать отечественный и даже западный рынки. И немного о том, что нужно сделать новичкам, чтобы с большей вероятностью попасть на Accelerator 2.  


Пара слов о самом проекте. Первый акселератор стартовал в декабре 2015 года. В отборочном туре приняли участие около 200 стартапов, и 10 из них вышли в очный этап. Финалисты получили гранты и помощь экспертов в доработке своих идей. Победителем стала команда SensArt с технологией превращения любой поверхности в сенсорный экран – Surfancy. С нее и начнем.

Surfancy


На первый МЕГА Accelerator SensArt пришла с продуктом Surfancy, с помощью которого из любой поверхности можно сделать сенсорную. Подробное описание технологии можно найти, например,тут. Размер возможного «тачскрина» за год вырос до 50 м2 (5х10 метров), команда продолжает работать над повышением скорости и точности системы.



Команда занимается не только технической стороной продукта. Сейчас стартап предлагает корпоративным клиентам сервисы. Первый предоставляет брендам возможность самим создавать интерактивный контент на основе уже имеющихся маркетинговых материалов и запускать его на инфраструктуре Surfancy. Так, например, была реализована интерактивная витрина магазина QuikSilver в рамках пилотного проекта, проведенного при поддержке МЕГИ.

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



Участие в МЕГА Accelerator помогло команде «пройти рубикон» в развитии любого стартапа – понять, какой итоговый продукт на основе разрабатываемой ими технологии будет востребован на рынке.

«Мы понимаем, что основной выигрыш – это именно попадание в десятку команд — участников очного акселератора. Опыт, который там можно получить, бесценен для B2B стартапов. Нам удалось переосмыслить то, что мы делаем, осуществить переход от технологии к продукту. В процессе участия в МЕГА Accelerator мы практически полностью изменили наш подход к клиенту, перейдя от продажи устройств к продаже сервисов, в которых сенсоры стали необходимым, но все же второстепенным элементом.

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



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

Texel


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



За год концепция изменилась: ребята изучили рынок и выбрали более перспективное, на их взгляд, направление — предоставление качественных рекомендаций по одежде: как по размерам, так и по стилю. Основным продуктом стало решение Dress Code.

«Концепция довольно проста. Мы устанавливаем цифровые примерочные в ТЦ, посетитель сканируется — это занимает не более 30 секунд. Затем он скачивает приложение Dress Code A.I. и видит на экране смартфона отфильтрованный каталог одежды, предлагаемой в ТЦ, — только то, что подходит ему по размеру и стилю, в зависимости от типа фигуры (груша, песочные часы и т.д.). Также приложение может показать путь до магазина, в котором продается выбранная пользователем вещь. Наша технология в разы сокращает время от шоппинга», — рассказывает Михаил Дорохов, основатель Dress Code A.I.

Стартап выбрал своим целевым рынком США, главный офис находится в Нью-Йорке, а центр разработки – в Москве. Команда создала работающий прототип, договорилась с достаточным количеством брендов и партнерами, обладающими сетью из 500 3D-сканеров по всей Северной Америке.

С учетом высокой популярности онлайн-покупок в США также используется E-commerce модель. Пользователь может либо отсканироваться в 3D-сканере (для этого как раз и нужна сеть из 500 установок), либо ввести свои данные через приложение. После он видит всю доступную в базе одежду, которая подходит ему по размеру и стилю, выбирает понравившуюся и нажимает кнопку «Купить». В планах компании — привлечение на платформу не менее 10000 платящих пользователей.



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

Участие в МЕГА Accelerator команда вспоминает с удовольствием.

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

Отдельно хотелось бы отметить общение с командой IKEA Centres Russia, например с управляющим МЕГОЙ Белая Дача, который нам очень помог своим опытом и видением рынка. Он говорил, что пусть лучше сырой и несовершенный продукт, который будет работать, чем идеальный, но нерабочий.  

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

Самый важный урок, который мы для себя извлекли: надо прислушиваться к другим людям и доверять их опыту, не бояться браться за то, с чем когда-то не справился кто-то еще. Мы очень благодарны организаторам МЕГА Accelerator, это был переломный момент для Dress Code», — поделился воспоминаниями Михаил Дорохов.

МЕГА Accelerator 2


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

Четыре подсказки для кандидатов:

  1. Выберите трек с тематикой, наиболее подходящей для вашей идеи. Их всего три: пространство для встреч, взаимодействие с посетителями и автоматизированный бэк-офис.
  2. Подготовьте понятную и яркую презентацию в формате PDF или PPTX.
  3. Подробно заполните анкету. Обратите внимание на вопросы про продажи, опыт работы с крупными компаниями и размер привлеченных инвестиций.
  4. Не тяните с подачей заявки, прием заканчивается уже 27 июля 2017 года!


Что дальше?

  1. Ваша заявка пройдет экспертный отбор. Если она войдет в топ-50 проектов — поздравляем, вы становитесь участником предакселерационной программы.
  2. С 2 по 27 августа прокачайте свой проект в предакселераторе, получите обратную связь от ведущих экспертов в сфере ритейла и попадите в итоге в топ-15 проектов.
  3. С 18 сентября по 8 декабря активно работайте над проектом на креативной площадке коворкинга PO2RT, запустите пилот на площадках торговых центров МЕГА и докажите, что ваш проект лучший.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333830/


Метки:  

Как подсознательно побудить сотрудников соблюдать дедлайны проекта

Пятница, 21 Июля 2017 г. 10:10 + в цитатник
Управление проектом в любой сфере предполагает наличие дедлайнов. Есть главный, венчающий собой всю работу и говорящий о его завершенности/незавершенности. Как правило, планы включают в себя и другие дедлайны для этапов поменьше.

image


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

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

Какой здесь психологический подтекст?

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

Мотивация

Доводилось ли вам сдавать экзамен, подготавливаясь к нему всего за ночь? Если да, то вы должны помнить свое волнение. Чем ближе дата важного события, дедлайна проекта или задачи, чем ближе вы к ней приближаетесь, тем больше волнения и нервозности вы ощущаете. В английском языке есть даже специальный термин — Goal Looms Larger Effect.

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

image

Давление

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

Ошибки планирования

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

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

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

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

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

image

1. Ставьте только реальные дедлайны

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

Как подсознательно повлиять на команду?

Разбейте большие задачи на задачи поменьше с меньшим временным отрезком. Создавайте и назначайте задачи, которые требуют день или два. Члены команды поймут, что они идут непрерывным потоком, и четко обозначенные дедлайны не сложно соблюдать.

2. Позволяйте команде ставить дедлайны

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

Как подсознательно повлиять на команду?

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

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

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

image

3. Объясняйте

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

Будьте точным настолько, насколько этого требует ситуация. Не нужно говорить следующее.

— Все ошибки в проекте должны быть исправлены к следующему понедельнику к 18:00.

Гораздо лучше объяснить важность.

— Все ошибки в проекте должны быть исправлены к следующему понедельнику к 18:00. Это важно, потому что во вторник у нас новый спринт, основанный на всех исправлениях.

Как подсознательно повлиять на команду?

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

4. Делайте акцент на негативных последствиях несоблюденных сроков

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

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

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

Как подсознательно повлиять на команду?

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

image

5. Используйте систему напоминаний

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

Как подсознательно повлиять на команду?

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

6. Используйте эффективное ПО

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

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

Как улучшить командную работу и соблюдать дедлайны?

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

Вот как это выглядит на примере популярного сервиса Trello.

image

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

image

А вот как выглядит проект на примере онлайн диаграммы Ганта GanttPRO. Все задачи здесь визуализированы, видны сроки их выполнения и прогресс.

image

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

Суммируем

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

  • Ставьте только реальные дедлайны;
  • Позволяйте команде ставить сроки;
  • Объясняйте;
  • Делайте акцент на негативных последствиях;
  • Используйте систему напоминаний;
  • Используйте эффективное ПО.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333796/


Метки:  

Как мы добавили RAM в серверы HPE

Пятница, 21 Июля 2017 г. 10:04 + в цитатник


Качество и надежность DRAM сейчас важнее, чем когда-либо, в основном из-за растущего использования виртуализации серверов. Конечно, стоит отметить что модули RAM, по мнению многих IT-специалистов, являются одним из самых надёжных элементов сервера и выходят из строя последними. Виртуализация имеет много преимуществ, но она значительно увеличивает количество необходимой памяти в сервере для обеспечения оптимальной производительности максимального числа виртуальных машин. По данным HP за 5 лет с 2007 до 2011 средняя память, установленная на всех серверах HP ProLiant, выросла более чем на 500% — от 4 ГБ до более чем 30 ГБ на сервер.

В настоящее время как облачный провайдер мы используем blade-серверы HP ProLiant BL460c Gen8 на шасси HPE BLADESYSTEM C7000 ENCLOSURE. Полностью QuickSpecs тут, обозначим лишь спецификацию RAM.

Standard (Preconfigured Models)
64GB (8 x 8GB) DDR3 1600MHz RDIMMs at 1.5V
64GB (4 x 16GB) DDR3 1866MHz RDIMMs at 1.5V
32GB (4 x 8GB) DDR3 1600MHz RDIMMs at 1.5V
32GB (2 x 16GB) DDR3 1866MHz RDIMMs at 1.5V
32GB (4 x 8GB) DDR3 1333MHz RDIMMs at 1.35V
32GB (2 x 16GB) DDR3 1600MHz RDIMMs at 1.35V
16GB (2 x 8GB) DDR3 1866MHz RDIMMs at 1.5V
16GB (4 x 4GB) DDR3 1333MHz RDIMMs at 1.35V
16GB (2 x 8GB) DDR3 1600MHz RDIMMs at 1.35V

Maximum
(LRDIMM) 512GB (16 x 32GB) up to 1333MHz at 1.35V
(RDIMM) 256GB (16 x 16GB) up to 1866MHz at 1.5V
(RDIMM) 384GB (16 x 24GB) up to 1333MHz at 1.35V
(UDIMM) 128GB (16 x 8GB) up to 1600MHz at 1.5v

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

Отметим, что в случае с использованием в оборудовании для облака, то есть в системах, требующих масштабируемости и отказоустойчивости в ущерб дешевизне, используется регистровая память c функцией коррекции ошибок (ECC RDIMM).

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

В поисках лаконичного ответа был найден White paper от HP, точнее даже два, один 2011 года, а второй 2017. Что мы выделили для себя:

  • HP не является производителем модулей RAM.
  • Когда вы видите бренд HP Qualified Memory, это означает, что DRAM прошла серьёзную проверку качества и тестирование с используем проприетарных диагностических инструментов и специализированных диагностических тестов, чтобы обеспечить высокий уровень производительности и доступности серверов HP ProLiant.



  • До того, как модуль DRAM получит бренд HP Qualified Memory (наклейку), он проходит интенсивный четырехфазный процесс проверки качества. HP задолго до разработки продукта сообщает производителям модулей памяти (Tier 1 memory suppliers) требования к DRAM. Группа HP Memory Core получает модули DIMM непосредственно от поставщика-производителя. На диаграмме процесса HPMQ (HP Memory Qualification) даны краткие описания четырех фаз процесса проверки качества. На наш взгляд, важно обратить внимание на то, что не описано какая доля полученных на проверку модулей отсеивается.


    В результате HPMQ не меняется расположение микросхем, кажется, дизайнер ошибся

  • Память проверяется так, чтобы она не становилась слишком горячей и по этой причине не забыла ваши данные.
    HP-validated memory is tested so that it does not get too hot and forget your data. HP-validated memory is tested so that it does not cause the system to shut-down due to power overload.
  • HP Qualified Memory обладает такой же полной гарантией, что и серверы ProLiant.
  • Если будет установлено, что отказ сервера вызван RAM под другим брендом (не-hp) или в любое время будет обнаружено, что сторонняя часть наносит ущерб компонентам или системам HP, стоимость ремонта, включая поврежденные детали HP, оплату труда и проезда, не будет покрываться по стандартной гарантии HP. Но установка сторонней памяти не снимает сервера ProLiant с гарантии HP. Подобное заблуждение часто приводится пользователями IT-форумов как аргумент «за OEM» в ходе обсуждения подбора памяти для сервера.

Сколько стоит HPMQ и сервис HP для покупателя? Для наглядности и понимания об уровне цен приложены скриншоты с Яндекс.Маркета. Мы не предлагаем расценивать это как полноценное исследование рынка, особенно по причине минимальных цен на HP RAM от неизвестных нам продавцов, которые на 60% ниже средней рыночной.





Почему для сравнения мы выбрали оперативную память от Kingston?

  • Каждый серверный модуль Kingston для конкретной системы должен пройти испытания на принудительный отказ. Эта уникальная процедура позволяет отбраковывать потенциально дефектные модули, не допуская их попадания в отгружаемые партии продукции. В том числе, присутствует проверка надёжности при разогреве. Полный список проверок качества здесь.
  • Являясь долговременным членом Совета директоров JEDEC, Kingston Technology способствует созданию отраслевых стандартов для технологий изготовления памяти. Все модули памяти, выпускаемые компанией Kingston, отвечают требованиям JEDEC и основным техническим условиям, применяемым ведущими изготовителями полупроводниковых устройств.
  • Техническая поддержка и тест-драйв. Есть официальное представительство в РФ (в отличии от Crucial, например), по запросу всегда есть необходимое количество плашек для отгрузки. Серверную память можно взять на тест-драйв и посмотреть, как она будет работать в реальных условиях на конкретном сервере.
  • «Пожизненная» гарантия. Если модуль памяти откажет, его заменят по гарантии.

У Kingston есть большое количество различных вариантов модулей RAM. Подходящий можно подобрать на их сайте. Потенциальные проблемы с несовместимостью должны отсутствовать, так как по заявлениям Kingston, модули были протестированы на всех соответствующих вариантах серверов. В нашем случае, мы выбирали для HP BL460C G8, проблем в работе не возникло.

Что дала нам покупка модулей памяти Kingston? При значительном объёме закупки удалось серьёзно сократить бюджет на модернизацию. Нам не удалось выявить значимых отличий в проверке качества RAM от Kingston и HP. Не найдя оснований для того, чтобы оплатить почти в два раза больший счёт, мы выбрали модули Kingston. Это также позволило не перекладывать дополнительные издержки на потребителей наших услуг.

В этой статье мы не пытаемся обратить внимание на дороговизну комплектующих от HP. Более того, мы довольны использованием серверов HP ProLiant и HP BladeSystem. Для поддержки большого количества виртуальных машин на одном физическом сервере требуется больше памяти, больше подключений для хранилищ данных и больше сетевых подключений, поэтому, по нашему мнению, серверы HP, сертифицированные для VMware, являются одними из лучших платформ для виртуализации, так как они были построены «with virtualization in mind».

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

  • VMware VMotion;
  • VMware DRS;
  • VMware HA;
  • и прочие.

Выбранное оборудование для облачного провайдера является основой для построения всей бизнес-системы, которая в конечном счёте должна обеспечить клиентов услугами с высоким уровнем доступности и качества (SLA от 99,95%) по конкурентной цене. Это является причиной поиска оптимальных решений.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333786/


[Перевод] XBRL: просто о сложном - Глава 3. Анатомия таксономии

Пятница, 21 Июля 2017 г. 03:03 + в цитатник

3. Анатомия таксономии


Эта глава с названием как у песни рок-группы 60-х годов описывает структуру таксономии XBRL. Больше внимания уделяется тому, что можно сделать с помощью таксономий, и меньше - тому, как это делается с технической точки зрения. Мы оставим этот уровень детализации для другой главы.


Начнем вот с чего: то, что мы называем таксономией, на самом деле представляет собой, как правило, целый набор связанных документов, называемых Связанным комплексом таксономий (Discoverable Taxonomy Set), для краткости - DTS.


Отправной точкой DTS является Схема таксономии. Это документ, на который ссылается отчет XBRL. Эта схема таксономии может ссылаться на другие документы, которые в свою очередь могут также ссылаться на другие документы и т.д.


Чтение DTS подразумевает переход по всем ссылкам до тех пор, пока не будут прочитаны все из связанных документов.


Таксономия может ссылаться на два типа документов:


  • Таксономия - это тот случай, когда одна таксономия (Extended Taxonomy) расширяет другую таксономию (Base Taxonomy)
  • База ссылок (Linkbase) - она используется для предоставления дополнительных сведений об определенных в таксономии концептах. Базы ссылок описывают связи между разными концептами, а также между концептом и дополнительной информацией к нему. Всего существует пять основных видов баз ссылок (каждый из которых будет подробно рассматриваться далее):
    • Определения (Definition)
    • Вычисления (Calculation)
    • Презентация (Presentation)
    • Ярлыки (Label)
    • Ресурсы (Reference)

Схематически это можно изобразить следующим образом:


image


Обратите внимание, что некоторые базы ссылок (Reference и Label) являются однонаправленными, т.е. ссылка ведет от таксономии к ресурсам базы ссылок. Другие базы ссылок (Definition, Calculation и Presentation) являются двунаправленными. Ссылки указывают от одной части таксономии к другой части.

Если необходимо, таксономия также ссылается на схему отчета XBRL «xbrl-instance-2003-12-31.xsd» (или, правильней сказать, импортирует ее) - она содержит базовые элементы, необходимые для определения всех концептов.

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

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


3.1. Схема таксономии


Ядро таксономии – это ее схема, которая является обязательным документом. Эта схема, о которой мы все это время говорим, на самом деле представляет собой документ XML Schema (стандарт W3C, позволяющий определять структуру XML-документов). Спецификация XBRL использует XML Schema в качестве базового языка для описания таксономий. Поверх этого базового языка она определяет набор специфичных для XBRL дополнений и ограничений.


В рамках схемы таксономии можно:


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

3.1.1. Определение концептов


Спецификация XBRL содержит ряд требований и рекомендаций по определению концептов:


  • Каждый концепт должен иметь уникальное имя в пределах схемы таксономии;
  • Каждый концепт должен иметь атрибут Тип, который определяет, какого типа данные могут предоставляться (см. далее);
  • Концепты определяются в схеме таксономии как пункт (item) или кортеж (tuple);
    Это означает, что каждый концепт должен иметь атрибут substitution group со значением xbrli:item или xbrli:tuple
  • Рекомендуется указывать в каждом концепте атрибут с уникальным идентификатором, это упрощает обращение к концепту.

XML Schema предоставляет несколько способов улучшить определение концептов:


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

Кроме того, XBRL определяет для концептов атрибуты periodType и balance:


  • Атрибут periodType необходим для item-концептов (xbrli:item). Он позволяет отделить концепты, измеряемые по состоянию на определенную дату, от концептов, измеряемых за период времени;
    В отчете XBRL факты указываются в определенном контексте. Атрибут periodType концепта, по которому передается факт, должен соответствовать типу периода в контексте факта.
  • Если тип концепта – monetary, то может быть использован атрибут balance, указывающий, определяет ли концепт дебетовое либо кредитовое значение. Это очень удобно для концептов бухгалтерского учета, как напр. активы, обязательства, доходы и расходы.

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


Поскольку в отчете XBRL могут быть указаны только факты по не абстрактным концептам, можно предотвратить передачу излишних фактов. В приведенном выше примере можно разрешать передачу фактов по концептам «менеджер бизнес-единицы» и «менеджер подразделения», но не по концепту «менеджер». Это возможно определением концепта «менеджер» как абстрактного.


3.1.1.1. Типы данных концептов

Для всех item-концептов должен быть указан тип передаваемых данных. Доступные типы данных определяются стандартом XML Schema и спецификацией XBRL.


XML Schema включает в себя следующие типы: логический (boolean), текстовый (text), десятичный (decimal), дата (date), части дат и т.д. (полный список можно найти в разделе 5.1.1.3 спецификации XBRL).


Примечание: для каждого типа из XML Schema имеется соответствующее определение типа XBRL.


Спецификация XBRL добавляет следующие типы данных:


  • Денежный (monetary) – используется для концептов, отражающих денежные значения;
  • Доли (shares) – для долевых концептов, напр. акций;
  • Простой (pure) – для концептов, в которых числитель и знаменатель выражены неявно в общем значении, напр. темпы роста, проценты;
  • Дробный (fractions) – когда факты не могут быть точно представлены никаким из других типов, напр. значение 1/3 не имеет точного десятичного представления, но его можно указать с помощью дробного типа. Дроби задаются как отдельные значения числителя и знаменателя.

3.1.2. Ссылки на базы ссылок


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


Ссылка может указывать на определенный вид Базы ссылок путем определения роли. Спецификация XBRL допускает следующие роли:


  • Определение (Definition)
  • Вычисление (Calculation)
  • Презентация (Presentation)
  • Ярлык (Label)
  • Ресурс (Reference)
  • Сноска (Footnote)

Примечание: Для сносок не создается отдельных баз ссылок. Эта роль используется только в пределах отчета XBRL.


Также, возможно определить пользовательские роли, что является еще одним примером расширяемости XBRL.


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


3.1.3. Роли (roles) и роли дуг (arcroles)


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


Связи, которые определяются дугами, типизируются ролями дуг (arcroles). Основные дуги, такие как «concept-label» или «summation-item» предопределены спецификацией XBRL. Также, возможно определить собственные дуги. Но используется это обычно для технических целей, напр. для определения новых связей в расширении спецификации XBRL. Примером этого могут служить дуги, определенные в спецификации XBRL Dimensions, о которой мы поговорим в Главе 5.


3.1.4. Пример


Вернемся к примеру «таксономии»:


image

Здесь мы можем приблизительно определить следующие концепты:
Имя Тип
nr_employees_total non-negative integer item
nr_employees_male non-negative integer item
nr_employees_female non-negative integer item
nr_employees_age_up_to_20 non-negative integer item
nr_employees_age_21_to_40 non-negative integer item
nr_employees_age_41_and_up non-negative integer item


Мы рассмотрим эти концепты в следующем разделе про базы ссылок.

3.2. Базы ссылок


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


Базы ссылок расширяют это определение следующим образом:


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

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

Примечание: Приведенные здесь «базы ссылок» не являются полными или корректными. Они приведены просто для иллюстрации.

База ссылок ярлыков (label linkbase)
База ссылок ярлыков может присвоить русский ярлык каждому используемому в форме концепту:
Концепт Ярлык
nr_employees_total Всего
nr_employees_male Мужчины
nr_employees_female Женщины


Другая база ссылок ярлыков может использоваться для присвоения английских ярлыков концептам:
Концепт Ярлык
nr_employees_total Total
nr_employees_male Men
nr_employees_female Women


Примечание: Этот пример базы ссылок ярлыков не совсем корректен. Мы вернемся к нему позже.

База ссылок определений (definition linkbase)
Определения концептов предоставляют различного рода информацию. Например, о том, что определенный концепт требует обязательного наличия другого концепта:
Концепт Требует
nr_employees_male nr_employees_female
nr_employees_female nr_employees_male


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

Если бы был определен концепт nr_employees, база ссылок определений могла бы указать, что он является аналогом всех nr_employees… концептов:
Концепт Псевдоним
nr_employees nr_employees_total
nr_employees nr_employees_male
nr_employees nr_employees_female


База ссылок вычислений (calculation linkbase)
C помощью вычисления можно задавать такие правила:
  • nr_employees_male + nr_employees_female = nr_employees_total


Такое правило автоматически отловило бы арифметическую ошибку в заполненной форме.

База ссылок на ресурсы (reference linkbase)
Предположим, что таксономия описывает отчет, требуемый законодательством. Полное описание того, что именно требуется предоставить, детально указано в законодательном акте, напр. как именно отчитываться по сотрудникам с частичной занятостью. База ссылок на ресурсы позволяет связать концепт с соответствующим ему разделом законодательного акта:
Концепт Ресурс
nr_employees_total Законодательный акт; Часть IV; Раздел 156-32.г
nr_employees_male Законодательный акт; Часть IV; Раздел 156-32.г
nr_employees_female Законодательный акт; Часть IV; Раздел 156-32.г


Примечание: Это можно выразить и связью «многие-к-одному», рассмотрим это далее.

База ссылок на презентаций (presentation linkbase)
Презентации описывают, как концепты могут быть иерархически представлены в отчетной форме. Наш пример мог бы иметь следующую иерархию:
Концепт Нижний уровень иерархии
nr_employees_total nr_employees_male
nr_employees_total nr_employees_female


3.2.1. Общие характеристики баз ссылок


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


3.2.1.1. Дуги (arcs)

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


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

image

Атрибуты дуги from и to могут быть ресурсами, включенными в расширенную ссылку (extended link), или локаторами (locators) в расширенной ссылке, которые указывают на концепты или ресурсы в других документах.

Локатор указывает на концепт или ресурс с помощью атрибута href, который может содержать id концепта или выражение стандарта XPointer.

3.2.1.2. Запрет и переопределение

Когда таксономия расширяется, может потребоваться изменить существующие взаимосвязи между концептами. Для этого существует два механизма – запрет (prohibiting) и переопределение (overriding).


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


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


При применении правил запрета и переопределения «базовая» сеть взаимосвязей изменяется расширениями. С использованием приоритета могут быть добавлены новые взаимосвязи, удалены существующие, либо существующие заменены новыми.

Спецификация XBRL указывает, что правила применяются к эквивалентным отношениям, и точно определяет, когда отношения эквивалентны на основе атрибутов дуг и сторон «от» и «к».

3.2.1.3. Циклы

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


  • Любые (any) – все циклы разрешены, нет ограничений на взаимосвязи;
  • Неориентированные (undirected) – этот странно названный вариант допускает циклы, если нет обратного пути к начальному узлу. Например, узлы А и Б могут иметь много путей от А к Б, но не должно быть пути от Б к А;
  • Никакие (none) – не разрешены никакие циклы, сеть не может иметь более одного пути между двумя узлами. Это накладывает большие ограничения на взаимосвязи.

Примечание: Путь состоит из набора дуг между узлами. Путь может быть коротким (одна дуга между двумя узлами) или длинным (сотни дуг между сотнями узлов).


3.2.1.4. Роли

Каждая ссылка в базе ссылок может иметь одну из нескольких ролей. Роль определяет использование ссылки. Доступные роли зависят от типа базы ссылок, они описаны в следующем разделе.


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


Роли могут быть использованы в ресурсах и в дугах между ними.


3.2.2. Специфичные характеристики баз ссылок


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


3.2.2.1. База ссылок ярлыков

Ярлыки предоставляют человекочитаемый текст на определенном языке. Каждый ресурс должен идентифицировать используемый в ярлыке язык.


Ярлыки могут иметь следующие роли:


  • label (роль по умолчанию) – используется для стандартных ярлыков;
  • terseLabel – используется для сокращенных ярлыков, где часть описания опущена;
  • verboseLabel – используется для расширенных меток, подробно описывающих концепт;
  • positiveLabel, positiveTerseLabel и positiveVerboseLabel – стандартный, сокращенный и расширенный ярлыки, используемые для положительного значения факта;
  • negativeLabel, negativeTerseLabel и negativeVerboseLabel – стандартный, сокращенный и расширенный ярлыки, используемые для отрицательного значения факта;
  • zeroLabel, zeroTerseLabel и zeroVerboseLabel – стандартный, сокращенный и расширенный ярлыки, используемые для нулевого значения факта;
  • totalLabel – используется для ярлыков концептов, определяющих итоговые значения;
  • periodStartLabel и periodEndLabel – используются для ярлыков концептов, определяющих факты, ассоциированные с началом или окончанием периода;
  • documentation – для ярлыков, предоставляющих документацию по концепту;
  • definitionGuidance, disclosureGuidance, presentationGuidance, measurementGuidance, commentaryGuidance и exampleGuidance – для ярлыков, которые дают пояснения по таким аспектам концепта как определение, способ измерения или пример заполнения.

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


Учитывая все вышесказанное, теперь мы можем более точно определить базу ссылок ярлыков из нашего примера:
Концепт Язык Роль Ярлык
nr_employees_total ru totalLabel Всего
nr_employees_male ru terseLabel Мужчины
nr_employees_female ru terseLabel Женщины
nr_employees_total en totalLabel Total
nr_employees_male en terseLabel Men
nr_employees_female en terseLabel Women


3.2.2.2. База ссылок ресурсов

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


Ссылки могут состоять из частей (part), напр. «Законодательный акт; Часть IV; Раздел 156-32.г». В спецификации XBRL элемент part является абстрактным, поскольку способ разделения публикации на части варьируется для каждой публикации / юрисдикции.

Ссылки могут иметь следующие роли:


  • reference (значение по умолчанию) – используется для стандартного ресурса концепта;
  • definitionRef – используется для ссылки на точное определение концепта;
  • disclosureRef, mandatoryDisclosureRef и recommendedDisclosureRef – используются для ссылки на объяснения требований к раскрытию;
  • unspecifiedDisclosureRef – используется для ссылки на объяснения не указанных требований к раскрытию, таких как общая практика, полнота и структура;
  • presentationRef – используется для ссылки на объяснение презентации концепта;
  • measurementRef – используется для ссылки на метод измерения значения концепта;
  • commentaryRef – используется для ссылки на любой комментарий общего плана к концепту;
  • exampleRef – используется для ссылки на документацию, иллюстрирующую использование концепта с помощью примера.

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


3.2.2.3. База ссылок презентаций

Дуги презентаций имеют роль «parent-child», что позволяет определять иерархическую структуру концептов. И parent-, и child-сторона связи должна указывать на концепт.


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


Дуга может иметь атрибут preferredLabel, который идентифицирует предпочтительную роль метки для указания на child-концепте презентации. Это особенно полезно, когда концепт используется несколько раз по-разному в DTS. Каждая связь в презентации может указывать на отдельную метку (в соответствии с ее ролью) для использования по этому концепту.


Для определения порядка следования концептов в презентации может использоваться атрибут дуги order.


3.2.2.4. База ссылок вычислений

Дуги вычислений имеют роль «summation-item», представляющую суммирующие взаимосвязи между концептами (вычитание в этом случае обеспечивается суммированием концепта, умноженного на -1, см.далее). Связь указывает от суммирующего концепта к нескольким суммируемым концептам. Дуга вычислений может соединять только item-концепты.


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


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


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


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


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


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

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

В настоящее время разрабатывается еще одна база ссылок – формулы (formula linkbase). Она станет доступна для использования в ближайшее время и обеспечит более широкие функциональные возможности для определения формул расчета.

3.2.2.5. База ссылок определений

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


  • general-special
    Взаимосвязь item-концептов с их обобщением / детализацией. Такие взаимосвязи можно рассматривать как «является одним из», напр. концепт «менеджер подразделения» является детализацией концепта «менеджер». Обратите внимание, что любое допустимое значение для элемента детализации также является допустимым как значение для элемента обобщения. В обратную сторону это, как правило, не работает.
    Сеть таких взаимосвязей может содержать только неориентированные циклы, поскольку детализация никогда не может быть собственным обобщением.
  • essence-alias
    Эта взаимосвязь может быть применена только к item-концептам. Она используется, когда определены несколько похожих концептов и указывает, какой из них является наиболее подходящим (essence). Все остальные концепты считаются псевдонимами (alias) этого essence-концепта.
    Alias-концепты и essence-концепты должны иметь одинаковый тип значения, одинаковый тип периода (periodType) и одинаковый атрибут balance, если он используется.
    Сеть таких взаимосвязей может содержать только неориентированные циклы, поскольку концепт не может быть собственным псевдонимом.
  • similar-tuples
    Эта взаимосвязь используется между кортежами концептов и аналогична essence-alias для item-концептов – она идентифицирует кортежи с эквивалентными определениями. Примером может служить почтовый адрес, который может отражаться в разных форматах, но содержать эквивалентные данные.
  • requires-element
    Эта взаимосвязь используется между кортежами или item-концептами и определяет требования в пределах отчета XBRL. Если в отчете используется факт для концепта на стороне «от», то в отчете также обязательно должен быть факт для концепта на стороне «к».
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333738/


Метки:  

Microsoft Bot Framework на Linux под Node.JS

Пятница, 21 Июля 2017 г. 02:50 + в цитатник
Чтобы создать и запустить наш первый чат бот с использованием Microsoft’s Bot Framework Microsoft’s Bot Framework под Linux нам нужно установить следующие компоненты:
  • Node JS
  • Bot Framework Emulator
  • Visual Studio Code (не обязательный параметр)

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

Установка Node.JS


Приводимые здесь команды установки подходят для дистрибутивов Debian/Ubuntu/Mint, для остальных инструкции можно найти здесь. В терминале запускаем следующие команды:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

Установка Bot Framework Emulator под Linux


Bot Framework Emulator нам понадобится для отладки нашего бота. Открываем следующую страницу в браузере: https://github.com/Microsoft/BotFramework-Emulator/releases. В терминале проверяем архитектуру своей машины командой:
arch
Согласно архитектуре скачиваем соответствующий файл со страницы Github, в моём случае — это файл:
botframework-emulator-3.5.29-x86_64.AppImage
После загрузки добавляем файлу права на выполнение и запускаем.

Установка Visual Studio Code


Устанавливается легко в пару кликов по этой ссылке.

Создание нашего первого чат бота


Открываем Visual Studio Code, выбираем новую папку, в которой будет находиться проект и запускаем внутренний терминал: Ctrl-`. Набираем команду для создания нового проекта:
npm init
Нажимаем несколько раз Enter потом yes. Теперь устанавливаем 2 пакета node.js: botbuilder и restify командами:
npm install --save botbuilder
npm install --save restify
Здесь в этой же папке в VS Code (или любом другом редакторе) создаём файл app.js и добавляем в него следующий код:

Код эхо-бота
var restify = require('restify');
var builder = require('botbuilder');

// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
   console.log('%s listening to %s', server.name, server.url); 
});

// Create chat connector for communicating with the Bot Framework Service
var connector = new builder.ChatConnector({
    appId: process.env.MICROSOFT_APP_ID,
    appPassword: process.env.MICROSOFT_APP_PASSWORD
});

// Listen for messages from users 
server.post('/api/messages', connector.listen());

// Receive messages from the user and respond by echoing each message back (prefixed with 'You said:')
var bot = new builder.UniversalBot(connector, function (session) {
    session.send("You said: %s", session.message.text);
});


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



Запуск и отладка чат бота


Запустить бота можно в терминале командой:
node app.js
Или в отладчике Visual Studio Code — F5. Для установки точки останова подводим курсор к нужной строке и нажимаем — F9. После запуска бота возвращаемся в эмулятор, подсоединяемся к адресу http://127.0.0.1:3978/api/messages и набираем: Hi и видим ответ нашего бота:



Вот собственно и всё. Более сложные примеры построения ботов на node.js можно найти по ссылке.
P.S. Опрос: нужна ли подобная статья применительно к C# и .Net Core

Никто ещё не голосовал. Воздержавшихся нет.

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

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

https://habrahabr.ru/post/333824/


Метки:  

Байки из Lab’а

Четверг, 20 Июля 2017 г. 22:24 + в цитатник


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

Вопросы сокращения

Прямой предок нашего основного защитного решения для домашних пользователей — программа AVP, которую Евгений Валентинович делал задолго до создания компании. Программа уже давно не выпускается, но нам до сих пор периодически задают вопрос, почему Antivirus Toolkit Pro сокращался как AVP, а не ATP (как это было бы логично).

Ответ прост — так сложилось. В конце 1993 года Virus Test Center при Гамбургском университете запросил программу для тестирования. Евгений Валентинович заархивировал очередной билд, назвав файл AVP.zip, отправил и совершенно забыл об этом. А вскоре оказалось, что антивирус показал наилучший результат из всех 32 протестированных продуктов. А участвовал в тесте он под именем архива. Пришлось соответствовать — достаточно глупо было бы называть его ATP и всем рассказывать, что это тот же самый антивирус, который победил в исследованиях как AVP.

Танцы со свиньями

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

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

  1. Отключите самозащиту антивируса (главное окно -> Настройка -> Дополнительно -> Самозащита -> Снять галку у пункта «Включить самозащиту» -› нажать ОК).
  2. Зайдите в папку C:\Program Files (x86)\Kaspersky Lab\Название продукта (например, Kaspersky Internet Security) \skin\resources\neutral\sounds.
  3. Переименуйте хранящийся в этой папке файл infected.wav во что-нибудь другое.
  4. Скачайте файл infected.wav и скопируйте его в ту же папку.
  5. Обязательно включите «Самозащиту» обратно!
  6. Можете скачать тестовый файл с нашей страницы support.kaspersky.ru/viruses/general/459, чтобы проверить звук.
  7. ????
  8. Profit!


Машинное масло для Папы Римского

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

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

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

Промышленная алкобезопасность

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

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

Ошибка адресом

Наш центральный офис находится по адресу: Ленинградское шоссе, 39. А у наших коллег и, к слову, почти ровесников из Mail.ru — по адресу: Ленинградский проспект, 39. Поэтому мы уже привыкли к тому, что все постоянно путают. То журналисты приедут на пресс-мероприятие не туда, то корреспонденцию пришлют.

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

«Да?! А это что?!» — Мужчина гневно ткнул пальцем в сторону спортивных площадок водного стадиона «Динамо» (наши соседи). А там в этот момент проходил какой-то корпоратив, и, как назло, именно Mail.ru. И все площадки были затянуты баннерами, где название было написано крупными буквами. А мужчина ушел. Так, наверное, до сих пор и думает, что его проклятые мейлрушники обманывают.

А если вы ожидали увидеть в этом посте что-то более традиционное типа нашего таймлайна с вехами, то вам скорее сюда.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333822/


Метки:  

[Перевод] Копируем человеческий мозг: операция «Свертка»

Четверг, 20 Июля 2017 г. 21:42 + в цитатник

Чему уже научились сверточные искусственные нейронные сети (ИНС) и как они устроены?


1. Предисловие.


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


2. Прорыв.


Что же такого произошло в последние годы, что вызвало бурное развитие ИНС?
Ответ очевиден — это технический прогресс и доступность вычислительных мощностей.


Приведу простой и очень наглядный пример:


2002:
image
Earth Simulator – один из самых быстрых в мире вычислительных комплексов. Он был построен в 2002 году. До 2004 года эта машина оставалась самым мощным вычислительным устройством в мире.


Стоимость: $350.000.000.
Площадь: четыре теннисных корта,
Производительность: 35600 гигафлопс.


2015:
image
NVIDIA Tesla M40/M4: GPU для нейронных сетей


Стоимость: $5000
Площадь: помещается в карман,
Производительность: До 2,2 Терафлопс производительности в операциях с одинарной точностью с NVIDIA GPU Boost


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


3. Операция свертки.


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


Что же это такое?
Попробуем разложить всё по полочкам:


Котики


image
Экспериментируя на животных, David Hubel и Torsten Wiesel выяснили, что одинаковые фрагменты изображения, простейшие формы, активируют одинаковые участки мозга. Другими словами, когда котик видит кружочек, то у него активируется зона “А”, когда квадратик, то “Б”. И это сподвигло ученых написать работу, в которой они изложили свои идеи по принципам работы зрения, а затем они это подтвердили опытами:





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


Математика


image
Графические редакторы давно используют математику для изменения стиля изображения, но как оказалось, те же самые принципы можно применить и в области распознавания образов.
Если мы рассмотрим картинку как двумерный массив точек, каждую точку — как набор значений RGB, а каждое значение — это просто 8-ми битовое число, то получим вполне себе классическую матрицу. Теперь возьмем и придумаем свою, назовем её Kernel, матрицу, и будет она такой:
image


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


image


Вот что мы получим:
image


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


Вот пример наборов Kernel матриц:
image
image


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


image


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


Подводные камни


Поняв, как работают мозги котов и как применить математический аппарат, мы решили создать свой фича-экстрактор! Но… подумав сколько фич нужно извлекать, сколько уровней извлечения нам надо и, прикинув, что для нахождения сложных образов мы должны анализировать сочетания фич “каждая с каждой” мы поняли, что памяти для хранения этого всего нам точно не хватит.
На помощь вновь пришли математики и придумали операцию объединения (pooling).
Суть ее проста — если в определенной области присутствует фича высокого уровня, то можно откинуть другие.
image


Такая операция не только помогает экономить память, но и избавляет от мусора и шумов на изображении.


На практике чередуют слои свертки и объединения несколько раз.


image


Финальная архитектура.


Применив всё, что описано выше, можно получить вполне рабочую архитектуру фиче-экстрактора, не хуже, чем у кошки в голове, более того, в настоящее время точность распознавания компьютерного зрения достигает в отдельных случаях >98%, а, как подсчитали ученые, точность распознавания образа человеком составляет в среднем 97%. Будущее пришло, Скайнет наступает!


Вот примеры нескольких схем реальных фича-экстракторов:
image
image
image


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


Это видео просто шикарно демонстрирует как работают фича-экстракторы:





4. Кто всем заправляет?


1. Tensorflow


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


Пример того, что дает Inception-v3 (классификатор изображений от Google, построенный на Tensorflow) и натренированный на ImageNet наборе изображений:
image


2. MS Cognitive Services (The Microsoft Cognitive Toolkit)


Компания Microsoft пошла другой дорогой, она предоставляет готовые API, как за деньги, так и бесплатно, с целью ознакомления, но лимитируя количество запросов. API — очень обширные, решают десятки задач. Это всё можно попробовать прямо на их сайте.
Можно, конечно, использовать MSCT так же как и TF, там даже синтаксис и идея очень похожи, оба описывают графы с заглушками, но ведь зачем тратить время, когда можно использовать уже обученные модели?
image


3. Caffe (Caffe2)


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


Яркий пример применения Caffe:
Rober Bond, используя натренированную на распознавание котов сеть, соорудил автоматизированную прогонялку котов с его газона, которая при обнаружении кота на видео, поливает его водой.
image


Существует еще много разных, популярных в свое время библиотек, оберток, надстроек: BidMach, Brainstorm, Kaldi, MatConvNet, MaxDNN, Deeplearning4j, Keras, Lasagne(Theano), Leaf, но лидером считается Tensorflow, в силу своего бурного роста за последние два года.


5. Области применения (вместо заключения)


В конце статьи хочу поделиться некоторыми яркими примерами использования сверточных сетей:


Область применения Коментарии Ссылки
Распознавание рукописного текста Точность человека — 97.5% CNN — 99.8% Визуализация образов натренированной сети в TF, JS интерактивная визуализация работы свертки, MNIST
Компьютерное зрение CNN распознает не только простые объекты на фото, но и эмоции, действия, а еще анализирует видео для автопилотов (семантическая сегментация). Эмоции, Семантическая сегментация, Skype Caption бот, Google Image поиск
3D реконструкция Создание 3D моделей по видео Deep stereo
Развлечение Стилизация и генерация картинок Deep dream, Deep style, Перенос стиля на видео, Генерация лиц, Генерация различных объектов
Фото Улучшение качества, оцветнение Face Hallucination, Colorizing
Медицина Создание лекарств
Безопасность Обнаружение аномального поведения (Свертка + Реккурентрость) Пример 1, 2, 3
Игры В итоге сеть играет круче профессионала, выбивая дырку и специально загоняя туда шар. Atari Breakout
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/333772/


Метки:  

Поиск сообщений в rss_rss_hh_new
Страницы: 1437 ... 1059 1058 [1057] 1056 1055 ..
.. 1 Календарь