День из жизни технической поддержки

Хорошо ли работать в техподдержке? Ну это зависит от того, что нужно поддерживать! Сегодня мы расскажем о том, какие задачи приходится решать саппортерам в Virtuozzo, а они поделятся своими секретами – почему пришли работать именно на эти должности.

image

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

image

Ведущие специалисты техподдержки Virtuozzo Мария Антонова и Анна Винокурова

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

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

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

Однако есть и предсказуемые волны нагрузки, они как правило связаны с релизами новых продуктов, выпуском мажорных апдейтов или же с обнаружением очередной уязвимости Linux.
— Когда в интернете публикуется очередной бюллетень безопасности (security advisory), в саппорт начинают приходить взволнованные клиенты, которые хотят узнать какие версии затронуты уязвимостью, и как скоро мы выпустим апдейт, — отмечает Анна Винокурова.

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

Чем же занимается саппорт Virtuozzo?

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

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

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

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

Решение

На клиентском сервере было внесено исправление в python-составляющую продукта, которое позволило продолжать корректную работу, несмотря на существование узлов NUMA, состоящих целиком из offline-ядер. После этого мы смогли выставить количество CPU в пределах реальных “выживших” ядер для виртуальной машины, а значит – стали возможными дальнейшие изменения конфигурации.

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

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

2. Пропадание сетевого подключения в виртуальных машинах

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

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

Решение

Увы, быстрого решения проблемы, без изменения модулей ядра просто не было, оказалось, что клиент просто не обновился до последней версии Virtuozzo Linux. На момент обращения уже было выпущено обновление, причем в формате ReadyKernel. Это позволило применить обновление и решить проблему за несколько минут, даже не перезагружая сервисы.

3. Пользователь удалил все контейнеры

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

Решение

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

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

Физически файлы виртуальных дисков были перенесены во временную директорию для удаления файлов, и остановка такого контейнера привела бы к конечному удалению данных.
Так как метаданные варьируются от контейнера к контейнеру, их необходимо создавать с нуля индивидуально. Конфигурационные файлы восстанавливались на основании биллинговой информации и тарифных планов конечных пользователей — это клиент делал сам, так как у нашей службы поддержки нет доступа к биллинговой информации клиента. Но мы, в свою очередь, предоставили что-то вроде «скелета» конфигурации, в который нужно было внести IP, имя хоста, лимиты ресурсов. Для восстановления метаданных диска, саппортеры Virtuozzo создали скрипт, который генерировал корректные метаданные на основе информации о смонтированных контейнерах из ядра, а также вычислял виртуальные параметры дисков, такие как количество цилиндров, головок и секторов.

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

И детектив, и лингвист, и программист

Таким образом, мы можем уверенно сказать, что наша служба поддержки – это очень интересный коллектив, готовый решать многоплановые проблемы и даже заниматься доработкой продукта. И если вы хотите попробовать себя в такой работе, можете работать по ночам и не боитесь азиатского английского, у нас как раз могут открыться новые вакансии!
ссылка на оригинал статьи https://habrahabr.ru/post/329950/

Продажи PlayStation 3 официально завершены


Посетители играют в PlayStation 3 на стенде компании Sony, выставка Games Convention 2007 в Лейпциге

Последняя модель игровой приставки PlayStation 3 на 500 ГБ снята с продажи. На официальной странице этой модели PlayStation 3 в графе «Доставка» теперь указано «Завершено».

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

Это была долгая история. PlayStation 3 вышла в ноябре 2006 года. Кстати, это была первая в мире приставка, которая использовала диски Blu-ray в качестве носителей информации. За всё время было продано более 80 млн приставок по всему миру. Хотя в первое время PS3 прославилась не очень хорошими вещами. Начать с того, что изначально Sony выставила на неё заоблачную цену $499, которая удивила многих фанатов. К счастью, паблишеры активно поддержали дорогую новинку — для неё вышли эксклюзивные игры Uncharted, Heavy Rain, The Last Of Us и Metal Gear Solid 4, которые помогли приставке выйти на достойный уровень продаж (70 млн в первые семь лет), хотя кое-кто предрекал ей провал с такой ценой и другими недостатками.

Именно за счёт паблишеров и подборки классных игр PS3 удалось добиться успеха. Например, в сентябре 2009 года портал IGN поставил PlayStation 3 только на 15-е место в списке игровых приставок всех времён (позади Wii, Xbox и Xbox 360), однако по качеству линейки игр PS3 выигрывала у конкурентов: так было в 2008, 2009 и 2011 годах.

Все понимали, что последний день близок. Это стало понятно ещё в декабре 2016 года, когда Sony прекратила производство последней модели PlayStation 3. Очевидно, сейчас складские запасы закончились.

Как видим, Sony строго придерживается десятилетнего жизненного цикла приставок. Поэтому в прошлом году начала готовить PlayStation 3 к уходу на покой. В октябре 2016 года вышла первая версия игры чисто для PS4 без поддержки PS3. В феврале этого года компания анонсировала, что с августа старенькая PS3 лишится доступа к облачному сервису PS Now.

PlayStation 4 близка к повторению рекорда своей предшественницы: она уже разошлась тиражом 60 млн штук, хотя прошло менее четырёх лет с момента начала продаж, причём только за последний год продано 20 млн штук. Это на 2,3 млн больше, чем годом ранее (прибавка за счёт выхода двух версий Pro и Slim). Кстати, у PlayStation 3 тоже был медленный старт, но затем несколько лет продажи росли.

Сейчас владельцев PS3 постепенно подталкивают к приобретению приставки нового поколения. Эта схема жизненного цикла отработана десятилетиями. PlayStation 3 относится к седьмому поколению игровых консолей (вместе с Xbox 360), а PlayStation 4 — к восьмому (вместе с Xbox One). Пусть PlayStation 3 уходит на покой, но игровая индустрия продолжает работать как часы.
ссылка на оригинал статьи https://geektimes.ru/post/289691/

Нерекурсивный алгоритм генерации всех разбиений целого числа

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

Итак, плоды усилий долгих…

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

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

1) первый объект просто выводится на экран в
самом начале, таким образом, он вынесен за пределы циклов, фактически является
инициализирующим;
2) существует несколько способов реализации переноса единицы,
которые могут, как упростить код, так и сделать его более запутанным;
3) данная нерекурсивная реализация может служить наглядным примером для объяснения генерации комбинаторных объектов на нескольких процессорах, после незначительной модификации. Код на языке PHP приведен только для демонстрации корректности алгоритма и может содержать лишние языковые средства, которые добавляют реализации
избыточности.

Описание алгоритма
Дано: исходный массив в виде единиц — А (1,1,1,1).
Шаги
1) Двигаясь по массиву слева направо, искать в массиве А минимальный элемент — x,
последний элемент не учитывается.
2) Перенести единицу из конца (последнего элемента) в найденный минимальный элемент x
(равносильно увеличению x на единицу и уменьшению на единицу последнего элемента).
3) Если в массиве А есть ноль — 0, то удалить последний элемент.
4) Разложить сумму всех элементов после измененного элемента — x – на единицы.
Пример
А=(1,1,1,1,1)
2,1,1,1
2,2,1
3,1,1

Код алгоритма на PHP

<?php $a = array( 	1, 	1, 	1, 	1, 	1, 	1, 	1, 	1, 	1 ); print_r($a); print '<br />'; $w = count($a); $h = 0;  while ($a[0] != $w) 	{ 	$min = $a[0]; 	$c = count($a) - 1; 	$i = 0; 	while ($i != count($a) - 1) 		{ 		if ($a[$i] < $min) 			{ 			$min = $a[$i]; 			$min2 = $i; 			}  		$i++; 		}  	if ($min2 == 0) $min2 = 0; 	$a[$min2]+= 1; 	$a[$c]-= 1; 	if (in_array(0, $a)) array_pop($a); 	array_splice($a, $min2 + 1); 	foreach($a as $v) 		{ 		$sum+= $v; 		}  	$j = 0; 	$all = $w - $sum; 	while ($j != $all) 		{ 		$a[] = 1; 		$j++; 		}  	print_r($a); 	print '<br />'; 	unset($all); 	unset($sum); 	unset($min); 	unset($min2); 	$h++; 	}  echo 'Amount: ' . $h; ?> 

Выводы
Хотел бы в конце поделиться одним наблюдением, я очень долго пытался понять, почему одни алгоритмы понятны сразу и легки для кодирования, а другие заставляют мучиться… и мучиться порой долго. Должен отметить, что этот алгоритм у меня получилось закодировать почти сразу, но только после того, как я получил однозначно понятное описание каждого шага. И тут есть важный момент, понять алгоритм и описать — задачи одна другой не легче. Однако, в алгоритмизации и составлении описания, особенно важным оказывается то, какими глаголами описываются действия в алгоритме — это (субъективно) в конечном счете может влиять и на конечную реализацию.

Литература
[1] Donald E. Knuth. The Art of Programming. Vol. 4. 2008.
[2] Dennis Ritchie and Brian Kernighan. The C Programming Language. 1978.
[3] Aleksandr Shen. Algorithms and Programming: Problems and Solutions.
[4] ru.wikipedia.org/wiki/Разбиение_числа
ссылка на оригинал статьи https://habrahabr.ru/post/329948/

Странности Generic типов Java

Я множество раз слышал о том, что дизайн Generic типов в Java является неудачным. По большей части претензии сводятся к отсутствию поддержки примитивных типов (которую планируют добавить) и к стиранию типов, а конкретнее — невозможности получить фактический тип параметра в рантайме. Лично я не считаю стирание типов проблемой, как и дизайн Generic-ов плохим. Но есть моменты, которые меня порядком раздражают, но при этом не так часто упоминаются.

1

Например, мы знаем, что метод Class#getAnnotation параметризован и имеет следующую сигнатуру: public <A extends Annotation> A getAnnotation(Class<A> annotationClass). Значит, можно писать вот такой код:

Deprecated d = Object.class.getAnnotation(Deprecated.class);

Тут я решаю вынести Object.class в отдельную переменную и код перестаёт компилироваться:

Class clazz = Object.class; // incompatible types: // java.lang.annotation.Annotation cannot be converted to java.lang.Deprecated Deprecated d = clazz.getAnnotation(Deprecated.class);

Где я ошибся?

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

Class<Object> clazz = Object.class; Deprecated d = clazz.getAnnotation(Deprecated.class);

2

Второй пример немного надуманный, но показательный. Представьте, есть у вас такой простой класс:

class Ref<T> {     private T value = null;      public T getValue() {         return value;     }      public void setValue(T value) {         this.value = value;     } }

Имея переменную ref я решу написать такой код. Что с ним может произойти плохого?

ref.setValue(ref.getValue());

Разумно было бы считать, что он всегда скомпилируется, но это не так! Вам всего лишь стоит объявить переменную ref с типом Ref<?> и вы получите ошибку incompatible types: java.lang.Object cannot be converted to capture#1 of ?
То есть wildcard в геттере автоматически раскрывается в Object. Мы не можем полагаться на то, что в наших выражениях он будет равен самому себе. Выстрелить себе в ногу этим пусть и сложно, но точно можно.

3

Далее, пусть есть такая очень простая иерархия классов:

class HasList<T extends List> {     protected final T list;      public HasList(T list) {         this.list = list;     }      public T getList() {         return list;     } }  class HasArrayList<T extends ArrayList> extends HasList<T> {     public HasArrayList(T list) {         super(list);     } }

Напишем следующий код:

HasArrayList<?> h = new HasArrayList<>(new ArrayList<>()); ArrayList list = h.getList();

Параметр T класса HasArrayList имеет верхнюю границу равную ArrayList, а значит при стирании типов код всё ещё должен компилироваться.

HasArrayList h = new HasArrayList<>(new ArrayList<>()); // incompatible types: java.util.List cannot be converted to java.util.ArrayList ArrayList list = h.getList();

Ну вот, опять не работает. Сейчас то что не так?

Не так то, что в сигнатуре метода getList возвращаемым типом является List, а компилятору просто лень расставлять явные приведения типов. Исправляется всё очень просто — надо переопределить данный метод в подклассе.

class HasArrayList<T extends ArrayList> extends HasList<T> {     public HasArrayList(T list) {         super(list);     }      @Override     public T getList() {         return super.getList();     } }

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

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

4

Последняя ситуация наиболее хитрая. Решил я написать подобный класс:

class MyArrayList<T extends Cloneable & BooleanSupplier> extends ArrayList<T> {     public void removeTrueElements() {         this.removeIf(BooleanSupplier::getAsBoolean);     } }

Как вы считаете, будут ли при вызове этого метода какие-нибудь проблемы?

new MyArrayList<>().removeTrueElements();

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

Exception in thread "main" java.lang.BootstrapMethodError: call site initialization exception ... Caused by: java.lang.invoke.LambdaConversionException: Invalid receiver type interface java.lang.Cloneable; not a subtype of implementation type interface java.util.function.BooleanSupplier ...

Хотя нет, я вас обманул. Этот код будет работать, если компилировать его из JDK9, а вот компилятор JDK8 допускает на нём ошибку.

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

Как исправить код без перехода на Java 9? Вот так:

public void removeTrueElements() {     this.removeIf(t -> t.getAsBoolean()); }

Ну и откомментировать, конечно, чтобы ваш коллега не сконвертировал всё обратно в method reference.

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

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

ссылка на оригинал статьи https://habrahabr.ru/post/329550/

Битва дронов: французский попугай против китайского яблока, или Parrot vs DJI

Около 70% всех квадрокоптеров, производимых в мире, покупают американцы – собственный летающий гаджет есть у каждого третьего жителя США. Но за последние несколько лет волна интереса к этим дронам докатилась и до России. Положение дел на рынке схоже с общемировым — позиции двух гигантов, DJI и Parrot, едва ли кто-то может оспорить.

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

image

Терминология

Начнем, как водится, с азов. Квадрокоптеры – это БПЛА (беспилотные летательные аппараты) с четырьмя роторами. Чтобы компенсировать реактивный момент, два винта гаджета, передний левый и задний правый, вращаются в одну сторону, передний правый и задний левый – в другую.
В технической литературе БПЛА часто именуют мультикоптерами. Мультикоптеры могут оснащаться не только четырьмя, но и 2 роторами (бикоптеры), тремя – трикоптеры, шестью – гексакоптеры, восемью – октокоптеры.

Производители квадрокоптеров называют их дронами. Правда, следует учитывать, что дроны – общее наименование всех беспилотников, в том числе и автомобилей. Таким образом, допускается называть квадрокоптеры как БПЛА, так и дронами или мультикоптерами.

Виды квадрокоптеров

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

Размер квадрокоптера обычно определяют по длине диагонали рамы. Различают три группы гаджетов:

  • миниквадрокоптеры – длина диагонали не превышает 25 см. В этом классе выделяется подгруппа микромоделей – с размером диагонали 5–7 см;
  • средние квадрокоптеры – длина диагонали 30–70 см;
  • большие модели – с длиной диагонали более 70 см.

Миниквадрокоптеры – в основном игрушечные. Вес большинства из них составляет менее 100 г. Гаджет с такой массой просто сдувает ветром, поэтому микродроны предназначены для полётов исключительно в помещениях. Как правило, дети их используют как игрушку, а взрослые — как модель для тренировки перед покупкой более серьезных образцов. На этом рынке безраздельно властвует компания Parrot.
image
Минидрон Parrot Airborne Cargo

Лёгкие маломощные минидроны с длиной диагонали 10 – 25 см могут летать под открытым небом только в безветренную погоду. Иногда длина диагонали квадрокоптера массой 200–300 г может превышать 25 см, но при низкой мощности мотора такие модели всё равно относят к минидронам.

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

Качества дрона зависят также от типа мотора:

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

image

Parrot и DJI

Подход к производству квадрокоптеров интересно рассмотреть на примере двух лидеров рынка: китайской компании DJI Technology (Dajiang Innovation Technology) и французской Parrot SA.

DJI Technology основал в 2006 году гонконгский предприниматель (тогда ещё студент) Фрэнк Ван Тао. Для того, чтобы наладить производство, одному из компаньонов Ван Тао пришлось продать собственную квартиру.
image
XP3.1 WayPoint — первые серийные контроллеры, обеспечивавшие полет дронов DJI по заданному маршруту

Первые дроны DJI стоили безумно дорого: цена БПЛА, выпущенного в 2010 году, составляла 10 000 $. Понятно, что большим спросом такой чудо-гаджет пользоваться не мог. И тогда компания пошла по пути удешевления продукции за счёт внедрения новых технологий. Стратегия оправдалась: уже в 2014 году было продано 140 000 дронов. Сегодня DJI занимает 70% мирового рынка дронов.

Французская фирма Parrot была основана в 1994 году тремя компаньонами: Кристин де Турвель, Жаном-Пьером Тальвардом и Анри Сейду. С самого начала компания специализировалась на изготовлении беспроводных устройств, разработке технологий обработки сигналов и распознавания голоса. С 2000 года Parrot вместе с компанией Ericsson занялась внедрением технологии Bluetooth Hands Free. Отсюда до производства дронов – буквально один шаг.

В 2010 году Parrot представила свой первый БПЛА Parrot AR.Drone. Благодаря сочетанию демократичной цены и высокого качества он имел столь ошеломляющий успех, что в 2015 году компания создала дочернюю фирму Parrot Drones.
image
Parrot AR.Drone

Обзор моделей DJI

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

С 2014 до 2016 года линейкам профессиональных моделей DJI Phantom и Inspire не было равных. Однако в сентябре 2016 года компания DJI представила модель складного дрона Mavic Pro.

Таблица1. Сравнение характеристик линеек Phantom (на примере Phantom 4), Inspire (Inspire 2) и Mavic (Mavic Pro Combo)
image

Все модели DJI оснащены датчиками GPS и Глонасс, поддерживают интеллектуальные режимы TapFly (полёт в точку, указанную оператором) и ActiveTrack (следование за объектом). Квадрокоптер Inspire 2 рекомендуется эксплуатировать при температуре от -20 до +40 °C, Phantom 4 и Mavic Pro – от 0 до +40 °C.

Inspire 2 – профессиональный гаджет, с помощью которого можно снимать фильмы голливудского класса. Корпус аппарата изготовлен из лёгкого и очень прочного алюминиево-магниевого сплава. Для получения качественного видео дроном должны управлять два оператора, каждый со своего пульта: один – отвечающий за полёт (он получает данные с фронтальной камеры), другой – за основную камеру. Основная камера (по выбору пользователя – Zenmuse X4S или X5S) вращается на 360°. Чтобы шасси не попали в кадр, в полёте они автоматически убираются. Дальность передачи данных – до 7 км. Используя Inspire 2, журналисты могут напрямую вести трансляцию с места событий.
image
DJI Inspire 2

Phantom 4 – дрон с великолепными аэродинамическими свойствами. Он очень устойчив в воздухе, а благодаря трёхосной системе стабилизации картинка не дрожит даже при резких изменениях курса. Угол обзора объектива камеры – 94°, геометрических искажений почти нет. Для передачи данных используется технология Lightbridge 2 – та же, что и в Inspire 2. Но управлять Phantom 4 очень просто, с этим справляется один оператор.
image
DJI Phantom 4

Mavic Pro незаменим для туристов и любителей экстремального спорта. У Phantom 4 и разложенного Mavic Pro диагонали примерно одинаковы. Но если для переноски Phantom 4 обязательно нужен специальный бокс, то лёгкий складной Mavic Pro в прочном «неубиваемом» корпусе можно носить в рюкзаке или большом кармане. Чтобы не повредить линзу объектива, её закрывают специальным колпачком. При этом технические характеристики камеры Mavic Pro впечатляют. Правда, угол обзора объектива – всего 78,8°. Но зато изображение не искажается, даже если камера расположена вплотную к объекту.

В воздухе Mavic Pro, несмотря на небольшой вес, очень устойчив, трёхосевая система стабилизации компенсирует вибрацию при порывах ветра, поэтому изображение не дрожит. При передаче данных используется не только Wi-Fi, но и новейшая технология Ocusync, дальность составляет до 7 км. Качественное видео можно сразу транслировать в социальные сети.

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

image
DJI Mavic Pro

Неделю назад вышла новая и самая (пока что) компактная модель фирмы — DJI Spark. Модель весит 300 г, диагональ на 6 см меньше, чем у Mavic Pro, функционал немного упрощен ради уменьшения габаритов. К примеру, угол обзора изображения можно менять только вверх и вниз, а для поворота камеры в сторону придется поворачивать уже сам квадрокоптер. Разгоняется дрон до 50 км/ч в спортивном режиме, а вот время автономной работы скромное — всего 16 минут от одного заряда при скорости в 20 км/ч. Этот недостаток компенсируется возможностью заряжать дрон от портативного power bank-а или любого другого источника питания через USB-кабель. Как и его предшественник, Spark умеет воспринимать команды жестами. Камера оснащена сенсором CMOS 1/2,3 дюйма. Разрешение фотографий, сделанных при помощи новинки, составит 12 Мп, а Full HD видео можно будет снять с частотой 30 кадров в секунду. Чтобы снять панораму, достаточно будет нажать одну кнопку.

За сохранность дрона отвечает система из сенсоров и датчиков, которая предотвращает падение или столкновение с другими объектами. Для управления по карте с точностью до 30 м используются навигационные системы GPS и ГЛОНАСС. При потере сигнала квадрокоптер вернется обратно. Официально завезенных в Россию моделей пока нет, так что получить модель можно только по предзаказу.

image
DJI Spark

Обзор моделей Parrot

Логотип компании Parrot – весёлый попугай. «Попугайские» цвета: красный, жёлтый и зелёный, – часто используются в дизайне гаджетов компании. Продукция фирмы рассчитана на самый широкий круг потребителей.

Предполагается, что подросток, вдоволь наигравшийся минидронами Parrot, сохранит о них лучшие воспоминания и, повзрослев, купит многофункциональный квадрокоптер AR.Drone, Bebop 2 FPV или Disco FPV.

Игрушечные квадрокоптеры Parrot с разноцветными наклейками и LED-подсветкой по внешнему виду напоминают инопланетных стрекоз. Они очень быстры и маневренны. image
Parrot Airborne Night

Таблица 2. Сравнение характеристик минидронов Parrot
image

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

Таблица 3. Сравнение характеристик многофункциональных дронов Parrotimage
Оптимальные условия для полётов беспилотников Parrot – температура от 0 до 40 °C.

Parrot AR.Drone 2.0 – один из самых популярных любительских квадрокоптеров. По соотношению цены и эксплуатационных качеств он подходит как опытным пользователям, так и новичкам. С его помощью очень удобно осваивать технику полётов дома и на улице: благодаря защитному кожуху квадрокоптер не повреждает предметы обстановки. Хотя кожух считается «домашним» аксессуаром, для большей безопасности рекомендуется надевать его и при полётах под открытым небом, особенно в городе. Дальность и высота полёта гаджета ограничены дальностью приёма сигнала Wi-Fi. Если пользователь захочет, чтобы его «птичка» летала дальше и выше, можно дополнительно приобрести усилитель сигнала. Но чересчур «лихачить» не рекомендуется, так как корпус хрупкий и способен выдержать столкновения не со всеми препятствиями. Производители позаботились, чтобы пользователю было удобно брать гаджет в поездки: зарядное устройство укомплектовано 4 вилками, предназначенными для разных типов розеток.
image
Parrot AR.Drone 2.0

Parrot Bebop 2 мог бы соперничать с DJI Mavic Pro, если бы не дальность полёта – всего 2 км. Однако неоспоримый плюс Parrot Bebop 2 – скорость 65 км/ч и высокая маневренность. При испытаниях в аэродинамической трубе аппарат смог на дистанции 300 м противостоять встречному ветру скоростью до 65 км/ч. Благодаря хорошо продуманной системе стабилизации видео получается очень качественным, картинка не дрожит.
image
Parrot Bebop 2

Модели Parrot Disco FPV конструкторы придали форму самолёта, что значительно улучшило её аэродинамические качества. По техническим характеристикам этот гаджет — конкурент Phantom 4. Небольшая дальность полёта (2 км) компенсируется высокой скоростью и маневренностью. Благодаря системе стабилизации изображение не дрожит. Видео с качеством 1080 p Full HD передаётся на смартфон в режиме реального времени.

image
Parrot Disco FVP

Советы по выбору квадрокоптера

Человека, который впервые покупает квадрокоптер, продавец может озадачить вопросом: RTF или KIT? RTF (Ready-to-Fly) – это, собственно, и есть квадрокоптер: фирменный, заводской сборки. Для того, чтобы он полетел, его просто нужно вынуть из коробки (возможно – надеть винты) и зарядить. KIT – это «конструктор», из которого необходимо собрать дрон. Понятно, что сборка требует определённого уровня знаний и опыта, а также времени.

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

  1. Определитесь с суммой, которую вы готовы истратить на покупку дрона.
  2. Новичкам для тренировок слишком дорогие модели брать не имеет смысла. Не годятся и чересчур маленькие гаджеты: управлять ими не очень удобно. Лучше приобрести недорогую лёгкую игрушку с диагональю 20–25 см. Здесь идеально подойдут минидроны Parrot: благодаря подсветке хорошо видно, где у них передний отсек.
  3. Выбирая квадрокоптер, следует подумать о том, что будет, если он упадёт. Наиболее прочные корпуса изготавливают из карбона и алюминиевых сплавов. Желательно, чтобы винты были защищены.
  4. Самые долговечные моторы – бесколлекторные.
  5. Если вы не планируете фотографировать извержение вулкана или вершину Эвереста, а собираетесь ограничиться соседним парком, то вполне можете сэкономить, купив гаджет с меньшим радиусом действия, но хорошей видеокамерой.
  6. Если вам нужно очень высокое качество изображения, а бюджет ограничен, целесообразно купить квадрокоптер с надёжной системой стабилизации, а камеру GoPro приобрести отдельно.
  7. Покупая дорогой квадрокоптер, обязательно приобретите специальные очки. Надев их, вы увидите мир с высоты птичьего полёта.

Итоги

Итак, каковы же результаты нашей битвы титанов? По внешнему виду сравнивать их не стоит, это слишком индивидуально. Стоит только отметить, что цветовое разнообразие у Parrot побольше.
Основные критерии для выбора — это время работы, высота подъема, качество съемки. С недавних пор — возможность заряжать беспилотник от USB (как в новом Spark). Определите для себя, какое качество фото и видео вам нужно — если вам принципиальны конкретные пиксельные характеристики или ISO, то вам на прилавок DJI. Если достаточно просто хорошего качества, то смысла переплачивать нет.

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

Возможно, исходить стоит именно из бюджета — если для вас приемлемо потратить сумму, необходимую для покупки того же Mavic Pro, то смысла сравнивать с линейкой Parrot нет. С другой стороны, если вам просто нужен стабильный аппарат, качественно выполняющий свои функции — уверены, Parrot Bebop 2 вас порадует.

Не то чтобы победила дружба… Просто конкурсанты оказались из разных категорий. DJI — профессиональный, Parrot — семейно-любительский.
image

Если вдруг вам приглянулся какой-либо из дронов – добро пожаловать на сайт Inspector Gadgets! Неопределившимся готовы помочь консультацией.

Пишите в комментариях, какой квадрокоптер понравился больше всего и почему — интересно узнать ваше мнение!
ссылка на оригинал статьи https://geektimes.ru/post/289689/