Неделя с Nokia Lumia 520, или обзор Windows Phone 8 от простого пользователя

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

Также, кому не сильно интересна статья, могут быть интересны несколько опросов по Windows Phone. Не проходите мимо 😉

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

Изначально я очень хотел себе 720-ю модель. Но, однажды, выходя вечером с семьей из магазина, я в очередной раз зашел в салон мобильных телефонов, чтобы посмотреть, не приехала ли еще моя долгожданная люмия. К сожалению, не приехала, зато приехала другая — 520-я. В желтом цвете. Поскольку ВинФонами я интересуюсь очень сильно, я сразу же попросил менеджера достать ее с витрины и дать покрутить-пощупать-потрогать. Скажу честно, ни малейшего ощущения бюджетности в телефоне я не обнаружил. Пару фотографий на скромную камеру — и в моей голове отчетливо возник вопрос: а зачем платить больше? 520 стоит 1800 грн. ($225), в то время как 720-я стоит в среднем 300 грн. ($370). Телефон мне очень понравился, и я сразу же его забрал (к слову, телефон был единственным в таком цвете, и одним из двух имеющихся в салоне вообще).

Внешне телефон выглядит очень стильно и свежо. Приводить тучу фоток не вижу смысла.
Они есть тут. Примеры фотографий и видео, сделанных на камеру, тут. С процессором Qualcomm Snap…………… и прочими техническими характеристиками, не значащими ровно ничего для меня, как для пользователя, я не буду утомлять и вас, а лучше поведаю о впечатлениях от использования системы на смартфоне, цену которого даже не назовешь средней. Скажу лишь про размер экрана: 4 дюйма, 800×480, да несколько скриншотов:

В первую очередь телефон поражает плавностью и скоростью своей работы. И правда — 512 мб оперативки для «Винды» — не проблема. Летает все, а все, что не летает, взлетает после несколькосекундной загрузки. Рабочий стол, плитки — это все классно, но именно скорость работы поразила меня в первую очередь. При этом небольшой объем памяти никак не сказывается на тяжелых приложениях. Браузер налегке открывает практически любые страницы (причем очень даже неплохо работает через наш, мягко говоря, абсолютно никакой GPRS/EDGE), а по вайфаю даст фору моему хрому на очень даже неслабом ноутбуке. Асфальт 7 (последний раз я залипал в гонки еще во времена второго NFS: Underground) не испытывает никаких проблем с производительностью графики. Какая мне тогда вообще разница — сколько там той памяти и гигагерц в процессоре?

Таки да, винда оказалась невероятно шустрой. Уже потом я приобщился к плиткам, вывел все 4 почтовых ящика (GMail работает прекрасно) на главный экран и стал созерцать, как прикольно появляются заголовки писем, смс-сок и прочего прямо на главном экране, не открывая ни одного приложения. Жаль, у Gismeteo живая плитка не пашет. А было бы неплохо (если тут есть представители — услышьте, пожалуйста!). А еще нашел себе прикольную программу для монторинга заряда батареи. Плитка показывает текущий заряд, сколько времени прошло с последнй зарядки и оценку оставшегося времени при текущем режиме использования. Именно при текущем режиме — а не простую экстраполяцию — скокапрошло-скокабатереи-скокаосталось. При рубилове в Асфальт показывает 3 часа, после 10 минут в режиме ожидания — 2 дня. Все как надо 🙂

Кстати, о приложениях. Windows Phone Marketplace, конечно, пустым не назовешь, но если рядом открыть Google Play — то сразу понимаешь, что магазину еще расти и расти. Практически весь основной софт я нашел (под вопросом пока только нормальная читалка FB2/PDF/Djvu). Особого выбора, правда, зачастую нет, и для моих целей находится, зачастую, всего одна программка, но, в большинстве своем, эти программки оказываются довольно неплохими, так что совсем без программной начинки смартфон не останется в любом случае.

Блютуз — есть. Работает в моей гарнитурой прекрасно. Передача файлов — не пробовал. В 2013 году — зачем? Я и на Андроиде блютуз только для гарнитуры использовал.

Есть датчик света и приближения (ну а как без него). Причем датчик света работает просто потрясающе — скорость реакции выше, чем Iphone 4s. И главное — точно. Ощущения очень приятные. Дисплей на солнце, конечно, бликует, но яркости достаточно, чтобы прочесть основную информацию. PPI? Что это? Фигня какая-то, не более. Если точно — 233. Субъективно — с головой. Любой мелкий текст читается отлично. Смыла меряться частями тела — ноль. Зачем мне 500 PPI, если и так хватает? Только зря будем жрать батарею, мучать бедное мобильное видео и копить тормоза.

Файловая система — закрытая на 200%. Даже на 300. При подключении телефона к компьютеру он определяется как флешка, но доступны лишь несколько папок а-ля «Музыка», «Видео» и т. д. Ни о каком полноценном серфинге по файловой системе речи быть и не может — даже стороннего софта нету. Видимо, данный функционал просто заблокирован на уровне системы. С одной стороны — вроде как безопасность, а с другой — все равно перебор.

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

Офис. Великий и могучий скромный мобильный офис здесь присутствует из коробки. Что он прекрасно делает — так это открывает документы. Быстро и красиво. Больше от него и не требуется (разве что мелочь какую-то поправить — на 4-дюймовом экране и это быстро раздражает). Отдельной похвалы заслуживает OneNote. Вместе с бесплатной метро-версией для Windows 8 получается киллер-связочка. За покупками — прямо на ноутбуке настрочил список с галочками — и пошел в магазин — все уже в телефоне. Номер страховки и всякая мелочь прекрасно хранится — идеальная записная книжка с бекапом в облаке. Зачем вообще нужен Evernote?

Естественно, в телефоне присутствует интеграция со всеми большими социальными сервисами — Facebook, Twitter, LinkedIn… Все дни рождения теперь в календаре, контакты объединяются сами — если имена одинаковые. Вообщем, ляпота. Правда, лично я в социалках не сижу особо, но для галочки прилепил — пусть будет.

Еще одна реальная фича телефона — HERE Maps и HERE Drive. Карты Украины просто нереального качества. Плюс из корочки все спокойно загружается и работает в оффлайне — просто загрузите их через ВайФай (полная карта Украины — 375 Мб). Автонавигатор уведомлен о скоростных режимах и предупреждает о превышении скорости — причем он знает, когда вы едете в городе (ограничение 60), а когда между домами, в жилой зоне (ограничение 10). Пищит сразу, если превышаете на 5-7 километров или в течении 10 секунд, если превысили на парочку. Если вспомнить Яндекс-навигатор, который пищит только тогда, когда впереди «менты с феном» — сразу понятно, откуда какая программа родом. Мне, как человеку, привыкшему ездить соблюдая ПДД, больше по душе навигатор от Nokia. Но есть в этом телефоне и навигаторе еще одна киллер-фича. Время нахождения спутников — 2-3 секунды. Как он это делает — не знаю, но через 2-3 секунды мое местоположение определяется с точностью до 10 метров и даже с правильным направлением (а вот это вообще мистика — компаса то в телефоне нет — из за этого Nokia City Lens не работает, кстати). Причем определяет даже тогда, когда я стою на месте, а не еду. Вообщем, вот такие вот чудеса.

Памяти в телефоне — 8 гигабайт (по факту — 7,2). Куда дели 800 метров — непонятно. Возможно — образ восстановления системы на случай ядерной войны (других вариантов не представляю — система, по-моему, неубиваемая вообще). Плюс карта памяти. На карту можно залить музыку, видео, но поставить приложения — никак. А внутренняя память жрется очень быстро. Куда — непонятно. При покупке было доступно 3,9 гигабайта (из 8ми!!!). Сейчас сталось 2 гига. 1,9 Гб занимает система, 1,7 — приложения, 380 Мб карты, 451 Мб временных файлов (можно удалить), и мистическое «Другое» на пол гига. Что за другое — понятия не имею. 2 свободных гига — вроде и не мало, но все равно как то не по себе.

Батареи хватает на 1 день интенсивного использования (звоним, имейлимся, игрушки, инет, пачка живых плиток, скайп вечно в фоне и 10 раз в час включить экран чтобы полюбоваться). Если телефон юзать по полной без остановки — часов 5-6 его предел.

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

Еще пару слов о самом телефоне: при внешней стильности все равно экономили на всем, на чем можно. Я уже говорил про компас. Так вот, нет вспышки у камеры (как вспышка — она и не нужна, а вот как фонарик — не хватает :), дешевые… нет, совсем-очень-супер-дешевые наушники-гарнитура и такая же зарядка (провод тонкий и все время вьется), а еще дата-кабель длиной 20 сантиметров… 20! САНТИМЕТРОВ! Вот уж действительно — телефон как флешка 🙂 Не самый мощный аккумулятор (рассчитывайте на день работы, не больше). Но если вспомнить цену — этому телефону можно и не такое простить — кремниевая и железная начинка у него первоклассная. А еще звук в наушниках хороший. Тут уж поверьте — у меня наушники ценой с этот телефон, да и уши растут откуда надо (и слышали очень много) — они все мне рассказали.

А теперь подведем итоги. Я думаю, что смог рассказать достаточно, чтобы каждый смог для себя понять — стоит ли ему связываться с Windows Phone, или нет. Лично для себя я отвечу: да, стоит. Пусть у системы есть еще некоторые недостатки, пусть еще не все допилено и некоторые особенности ОС вызывают недоумение, но, все же, Nokia и Microsoft сумели создать прекрасный продукт, у которого есть свои неоспоримые достоинства. Пусть не всем нравится новый плиточный дизайн, но большой и жирный плюс надо ставить только за то, что он вообще есть — первый раз за последние почти 30 лет у кого-то хватило смелости изобрести в дизайне интерфейсов что-то действительно новое. А кому не нравится — никто и не заставляет пользоваться.

Лично я желаю удачи Nokia и Microsoft, и да будет конкуренция! Нам, пользователям, от нее только лучше 🙂

P. S. Убедительная просьба избежать холиваров в стиле Android VS Windows Phone и Nokia, почему ты не на Android. Лучше тихонечко проголосуйте.

И в конце несколько опросов.

Ваше мнение о Windows Phone

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

Никто ещё не голосовал. Воздержавшихся нет.

Каких фич в Windows Phone реально не хватает

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

Никто ещё не голосовал. Воздержавшихся нет.

Как для вас оптимальный размер экрана в телефоне

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

Никто ещё не голосовал. Воздержавшихся нет.

Какая цена на смартфон для вас приемлема

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

Никто ещё не голосовал. Воздержавшихся нет.

Оцените дизайн Metro (Modern)

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

Никто ещё не голосовал. Воздержавшихся нет.

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

Бесперебойность (HA) для сервисов OpenStack MySQL + rabbitMQ

Автор: Piotr Siwczak
Последняя статья Олега Гельбуха дала обзор различных аспектов бесперебойности в OpenStack. Все компоненты OpenStack разработаны с учетом бесперебойности, но платформа использует и внешние ресурсы, как, например, базу данных и систему обмена сообщениями. И это забота пользователя — развернуть эти внешние ресурсы для безотказной работы.

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

По умолчанию для обмена сообщениями используется RabbitMQ, а база данных по умолчанию — MySQL. В отрасли известны надежные решения и по нашему опыту их достаточно для масштабирования даже в крупных установках. В теории подойдет любая база данных, поддерживающая SQLAlchemy, но большинство пользователей пользуются базой данных по умолчанию. Для обмена сообщениями трудно найти альтернативу RabbitMQ, хотя некоторые пользуются драйвером ZeroMQ для OpenStack.

Как в OpenStack работают сообщения и база данных

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

Пользователь отправляет свой запрос в OpenStack, взаимодействуя с компонентом nova-api. Nova-api обрабатывает запрос на создание экземпляра, вызывая функцию create_instance из API-интерфейса nova-compute. Функция делает следующее:

— Проверяет данные, введенные пользователями: (например, проверяет, что существует запрошенный образ ВМ, разновидность, сети). Если они не определены, она пытается получить значения по умолчанию (например, разновидность, сеть по умолчанию).
— Проверяет запрос на предмет соответствия ограничениям пользователя.
— После того, так описанная выше проверка дала положительные результаты, создает запись об экземпляре в БД (функция create_db_entry_for_new_instance).
— Вызывает функцию _schedule_run_instance, которая передает запрос пользователя компоненту nova-scheduler через очередь сообщений с помощью протокола AMQP. Тело запроса содержит параметры экземпляра:

request_spec = {
‘image’: jsonutils.to_primitive(image),
‘instance_properties’: base_options,
‘instance_type’: instance_type,
‘num_instances’: num_instances,
‘block_device_mapping’: block_device_mapping,
‘security_group’: security_group,
}

Функция _schedule_run_instance завершается отправкой сообщения AMQP с вызововм функции scheduler_rpcapi.run_instance.

Теперь в работу вступает планировщик. Он получает сообщение со спецификацией узла и на основе него и своих политик планирования пытается найти подходящий узел для создания экземпляра. Это выдержка из файлов журнала nova-scheduler в процессе выполнения этой операции (здесь используетя FilterScheduler):

Host filter passes for ubuntu from (pid=15493) passes_filters /opt/stack/nova/nova/scheduler/host_manager.py:163
Filtered [host ‘ubuntu’: free_ram_mb:1501 free_disk_mb:5120] from (pid=15493) _schedule /opt/stack/nova/nova/scheduler/filter_scheduler.py:199

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

Weighted WeightedHost host: ubuntu from (pid=15493) _schedule /opt/stack/nova/nova/scheduler/filter_scheduler.py:209

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

— Обновляет запись об узле для экземпляра в базе данных nova (узел = вычислительный узел, на котором будет создан экземпляр) и
— Отправляет сообщение по протоколу AMQP сервису nova-compute на этом конкретном узле, чтобы запустить экземпляр. Сообщение включает UUID экземпляра для запуска и следующее действие, которое необходимо предпринять, то есть:run_instance.

В ответ сервис nova-compute на выбранном узле вызывает метод _run_instance, который получает параметры экземпляра из базы данных (на основе UUID, который был передан) и запускает экземпляр с соответствующими параметрами. Во время настройки экземпляра nova-compute также взаимодействует по протоколу AMQP с сервисом nova-network для настройки сетевого взаимодействия (в том числе назначения IP-адреса и настройки DHCP-сервера). Состояние виртуальной машины на разных этапах процесса создания фиксируется в базе данных nova с помощью функции _instance_update.

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

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

Решения HA для базы данных

Вы можете предотвратить сбой базы данных с помощью тщательного резервирования и репликации данных. В случае с MySQL существует много решений с подробным описанием, в том числе MySQL Cluster (“официальный” набор для кластеризации MySQL), MMM (инструмент управления тиражированием с несколькими основными репликами) и XtraDB из Percona.

Кластер MySQL

Кластер MySQL работает на основе специального движка для хранения под названием NDB (Network DataBase). Движок представляет собой кластер серверов под названием “узлы данных”, который управляется “узлом управления”. Данные сегментируются и реплицируются между узлами данных и для каждой единицы данных существует как минимум две реплики. Все реплики обязательно располагаются на разных узлах данных. Поверх узлов данных запущена ферма серверов MySQL с хранилищем NDB в серверной части. Каждый из процессов mysqld обладает возможностью чтения/записи и позволяет распределять нагрузку для обеспечения эффективности и бесперебойности.
image
Кластер MySQL гарантирует синхронную репликацию , что является явным недостатком традиционного механизма репликации. У него есть некоторые ограничения по сравнению с другими движками хранения (хороший обзор расположен по этой ссылке).

Кластер XtraDB

Это решение признанной в отрасли компании Percona. XtraDB Cluster состоит из набора узлов, на каждом из которых запущен экземпляр Percona XtraDB с набором дополнений для поддержки репликации. Дополнения содержат набор процедур для обмена данными с движком хранения InnoDB и позволяют ему создать на нижнем уровне систему репликации, соответствующую спецификации WSREP.

image

На каждом кластерном узле запущена версия mysqld с дополнениями от Percona. Также на каждом из них располагается полная копия данных. Каждый узел позволяет выполнять операции чтения и записи. Как и MySQL Cluster, XtraDB Cluster имеет некоторые ограничения, описанные здесь.

MMM

Инструмент управления тиражированием с несколькими основными репликами (MultiMaster replication Manager) использует для репликации традиционный механизм “master-slave”. Он работает на основе набора серверов MySQL с как минимум двумя основными репликами с набором подчиненных реплик, а также с выделенным узлом мониторинга. Поверх этого набора узлов настраивается пул IP-адресов, который MMM может динамически перемещать от узла к узлу, в зависимости от их доступности. У нас есть два типа этих адресов:

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

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

Узел мониторинга проверяет доступность серверов MySQL и включает перенос “записывающих” и “читающих” IP-адресов в случае отказа сервера. Набор проверок относительно прост: он включает проверку доступности сети, проверку присутствия mysqld на узле, присутствия ветки репликации и размера журнала репликации. Распределение нагрузки по чтению между “читающими” IP-адресами выполняется пользователем (его можно сделать с помощью HAProxy или циклического перебора DNS и т.п.).

image

MMM использует традиционную асинхронную репликацию. Это значит, что всегда есть шанс, что в момент сбоя мастера реплики отстают от мастера. Сейчас используется одна ветка репликации, чего часто недостаточно в многоядерном мире с большим объемом транзакций, особенно когда выполняются долгие запросы на запись. Эти соображения устраняются в будущей версии MySQL, которая реализует набор функций для оптимизации бинарного лога (binlog) и бесперебойности HA.
Что касается обучающих материалов OpenStack в отношении бесперебойности MySQL, Алессандро Тальяпьетра (Alessandro Tagliapietra) представляет интересный подход (статья описывает только OpenStack) к обеспечению доступности MySQL с помощью репликации “master-slave", а также Pacemaker с агентом Percona’s Pacemaker.

Обеспечение бесперебойности (HA) для очереди сообщений

По своей природе данные RabbitMQ очень часто меняются. Так как для обмена сообщениями важны скорость и объем данных, все сообщения хранятся в RAM, если вы не определили очереди как “устойчивые” – в этом случае RabbitMQ записывает сообщения на диск. Эта возможность поддерживается OpenStack с помощью параметра rabbit_durable_queues=True в nova.conf. Хотя сообщения записываются на диск и таким образом не пропадут при сбое или перезагрузке сервера RabbitMQ, это не является настоящим решением для обеспечения бесперебойности, так как:

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

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

Также существует решение на основе Pacemaker, но оно считается устаревшим по сравнению с описанным выше.

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

Опыт развертывания в Mirantis

Компания Mirantis выполняла установки высокодоступного MySQL с помощью MMM (инструмент управления тиражированием с несколькими основными репликами) для нескольких клиентов. Хотя некоторые разработчики выражали озабоченность ошибками в MMM в сетевых дискуссиях, в нашем опыте мы не встретили значительных сбоев этого инструмента. Мы считаем его достаточным и приемлемым решением. Тем не менее, мы знаем, что есть люди, у которых много проблем с этим решением и поэтому сейчас рассматриваем архитектуры на основе подхода синхронной репликации WSREP, так как он по определению обеспечивает большую целостность данных и управляемость ими, а также более простую настройку (например, Galera Cluster, XtraDB Cluster).
Ниже приведена иллюстрация настройки, которую мы выполнили для крупномасштабной установки OpenStack:

image

Бесперебойность базы данных обеспечивается MMM: репликация master-master с одной основной репликой в режиме ожидания (только активная реплика поддерживает запись, а оба мастера поддерживают чтение, таким образом, у нас один “записывающий” IP-адрес и два “читающих”). Модуль mmm_monitor проверяет доступность обоих мастеров и соответственно перемешивает “читающие” и “записывающие” IP-адреса.

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

Так как у нас есть только один “записывающий” IP-адрес, нам не нужно распределять нагрузку и запросы на запись попадают сразу на него.

С таким подходом мы можем обеспечить масштабируемость запросов на запись за счет добавления большего числа подчиненных узлов в ферму БД, а также балансировки нагрузки с помощью HAproxy. Кроме того, мы поддерживаем высокую доступность, используя Pacemaker (для определения сбоев HAproxy) плюс MMM (для определения сбоев узла базы данных).

Если сравнивать RabbitMQ HA и OpenStack, Mirantis предложила дополнение для nova с поддержкой зеркалирования очередей. С точки зрения пользователя дополнение добавляет две новых опции в nova.conf:

-rabbit_ha_queues=True/False – для включения зеркалирования очереди.
-rabbit_hosts=[«rabbit_host1»,«rabbit_host2»] – чтобы пользователи могли определить кластеризованную пару узлов RabbitMQ HA.

Технически происходит следующее: в каждый вызов queue.declare внутри nova добавляется x-ha-policy:all и подключается логика кластера roundrobin. Саму настройку кластера RabbitMQ выполняет пользователь.

Дополнительные сведения

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

http://wiki.openstack.org/HAforNovaDB/: Бесперебойность для БД OpenStack
http://wiki.openstack.org/RabbitmqHA: Бесперебойность системы очередей
http://www.hastexo.com/blogs/florian/2012/03/21/high-availability-openstack: статья о различных аспектах бесперебойности в OpenStack
http://docs.openstack.org/developer/nova/devref/rpc.html: принцип работы обмена сообщениями в OpenStack
http://www.laurentluce.com/posts/openstack-nova-internals-of-instance-launching/: интересное описание последовательности шагов при запуске экземпляра
https://lists.launchpad.net/openstack/pdfGiNwMEtUBJ.pdf: презентация о бесперебойности в nova
http://openlife.cc/blogs/2011/may/different-ways-doing-ha-mysql/: заголовок все объясняет
http://www.linuxjournal.com/article/10718: статья о репликации MySQL
http://www.mysqlperformanceblog.com/2010/10/20/mysql-limitations-part-1-single-threaded-replication/: о проблемах производительности репликации
https://github.com/jayjanssen/Percona-Pacemaker-Resource-Agents/blob/master/doc/PRM-setup-guide.rst: статья о репликации MySQL: статья о Percona Replication Manager
http://www.rabbitmq.com/clustering.html: кластеризация RabbitMQ
http://www.rabbitmq.com/ha.html: зеркалированные запросы RabbitMQ

Оригинал статьи на английском языке

ссылка на оригинал статьи http://habrahabr.ru/company/mirantis_openstack/blog/177357/

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

Недавно изучил отчет по рынку мобильных приложений, в котором узнал о довольно занимательном факте. Оказывается, несмотря на то, что на каждую тысячу стартапов со своим приложением появляется один стартап, который предоставляет инструменты для разработки, и количество таких стартапов растет очень быстро, до сих пор нет единого каталога интсрументов для разработки мобильных приложеий. На всякий случай уточню, что речь идет не о библиотеках, а об отдельных сервисах, типа urban airship, apcudo, burstly и т.д. Хотелось бы спросить сообщество, в первую очередь разработчиков, будет ли интересен обновляемый краудсорсный каталог таких инструментов с описаниями, ценами, рейтингом, который помог бы разработчикам быстро находить нужный инструмент и ознакамливаться с новинками. У меня уже насобиралось порядка 170 таких инструментов, могу дополнить и оформить в интерактивную таблицу на нашем сайте, но хочется на это тратить силы, только если это многим интересно и если пополнять каталог буду не только я. Заранее спасибо за активное участие в опросе.

Будет ли интересен обновляемый краудсорсный каталог инструментов для разработки мобильных приложений с описаниями, ценами, рейтингами?

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

Проголосовал 1 человек. Воздержавшихся нет.

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

Что умеет Unity Tweak Tool

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


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

Unity

Панель запуска


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

Найти


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

Панель


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

Переключатель


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

Веб-приложения


Здесь всё просто: вы можете включить и выключить все веб-приложения либо лишь некоторые из них.

Дополнительно


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

Диспетчер окон

Общие


Основные параметры графики и рабочего пространства.

Настройка рабочих мест


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

Обзорный режим

(Windows Spread)
Моя любимая возможность. Появилась она в Gnome 3 и позволяет легко преключаться между окнами с помощью обзора. Чтобы увидеть его в действии нажмите на клавиатуре Win+w. Результат будет таким:

Красиво, не правда ли?

Упорядочивание окон

(Windows Snapping)

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

Активные углы


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

  • Показать рабочий стол (Toggle Desktop)
    Сворачивает все открытые на данный момент окна
  • Показать рабочие места
    Отображает все рабочие столы при условии что их больше одного
  • Обзорный режим (Windows Spread)
    Моя любимая возможность. Появилась она в Gnome 3 и с тех пор позволяет легко и быстро переключить окна рабочего стола с одного на другой Ну например, у вас открыт одновременно блокнот и калькулятор и ещё, скажем, графический редактор Paint. И вам необходимо переключится из него в блокнот и обратно. раньше нужно было искать и использовать панель задач или нажимать Alt+Tab, с помощью новой оболочки всё гораздо легче. Вы просто подводите курсор к например нижнему правому углу и вуаля! видите все открытые окна!

    Удобно, не правда ли? После обзора вы проста кликаете на нужном окне и работаете!
  • Обзорный режим для всех окон (Spread all windows)
    Принудительное включение режима для всех окон.

Дополнительно


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

Оформление

Темы


Ну здесь всё понятно. Можно выбрать из установленных в системе тем. Или загрузить новую с сайта gnome-look.org, распаковывать содержимое архива в папку /usr/share/themes/ и открыть и выбрать в Tweak Tool.

Значки

Выбор значков(иконок) на сайте gnome-look.org большой. Загружаем понравившейся набор и распаковываем в папку /usr/share/icons/ после чего смело выбираем набор значков в Unity Tweak. Например, большой популярность пользуется набор значков Faenza. Загружаем, далее распаковываем и либо запускаем скрипт INSTALL либо разархивируем из основного архива файл Faenza.tar.gz
В нём то и находятся наши значки. Распаковываем, помещаем по нужному пути, наслаждаемся красивым видом )

Курсоры


Открываем уже известный нам сайт gnome-look.org и загржаем красивые указатели мыши. Распаковываем в /usr/share/icons/ и выбираем в Unity Tweak Tool. Всё просто! )

Шрифты


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

Элементы управления окном


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

Система

Эту группу настроек приведу их списком, без пояснения.

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

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

Тяжелый FPV-квадрокоптер — разработка, сборка и первый полет

image

Я занимаюсь квадрокоптерами в качестве хобби уже почти полгода. На свой последний аппарат я навесил камеру (GoPro HD Hero 2) и видеопередатчик, и летал на нем через видеоочки — крутейшее ощущение, я вам хочу сказать. Нo техника была нe идеальной. Старая рама X525 с алюминиевыми балками была недостаточно стабильной для веса в 1.8кг, коптер в воздухе потряхивало, да и выглядело это всe достаточно колхозно. Поэтому было принятo решение строить новый квад, на собственноручно разработанной раме, с учетом всех потребностей. А потребности были следующие:

  • Место под всe оборудование. На новой раме должно былo быть достаточно места для камеры (без пропеллеров в картинке), передатчика, OSD, большого аккумулятора, плюс электроники управления (плата контроллера полета и GPS).
  • Стабильность. Рама должна быть максимально жесткой, но в то же время обеспечивать виброизоляцию камеры от моторов.
  • Внешний вид. Хотелось сделать коптер таким, чтобы было приятно на него смотреть, а не типичным для начинающих комком проводов и стяжек на стандартной крестовидной раме.
  • (Вторично) Вес. Коптер на базe X525 весил 1.8кг с камерой и батарейкой, хотелось эту цифру слегка уменьшить, заодно и приподнять время полета на одном аккумуляторе.

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

Разработка

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

Однако полностью под мои потребности Spidex не подходил. Во-первых, в нем использованы алюминиевые трубки, от которых я уже натерпелся — гнутся они, причем даже без аварий, просто от постоянной нагрузки. Во-вторых, я использую камеру GoPro Hero HD2, одолженную на неопределенный срок у сожителя — я нe готов монтировать ее на коптер без защитного корпуса, а Spidex этого не предусматривает.

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


Общий вид коптера сверху


Центральные пластины и держатели камеры и аккумулятора

Удовлетворившись данным результатом, я передал чертежи знакомому, и заказал всe необходимые детали в местных (немецких) онлайн-магазинах. В частности, были куплены карбоновыe трубки (16×14мм, метровой длины, три штуки — для рамы нужны будут две, ну и про запас), зажимы для них вместе с подходящими винтами/гайками (из набора FCP HL от Flyduino), провода для прокладки через трубки к моторам, виброизоляторы (сайлент-блоки под М3), и куча всякой мелочевки.

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

  • Моторы: 4x NTM 28-30 750kv
  • Контроллеры моторов: 4x HobbyKing Blue Series 30A, с прошивкой SimonK
  • Пропеллеры: 4x Graupner E-Prop 11×5
  • Плата управления: Crius MultiWii SE v0.1, с MultiWii 2.2
  • Аккумуляторы: Turnigy Nanotech 4S 4500mAh 25-35C
  • Камера: GoPro HD Hero2
  • Видеопередатчик: ImmersionRC 5.8G 25mW
  • Антенна: Clowerleaf 5.8G, DIY от умельца на местном форуме
  • OSD: MinimOSD с прошивкой KV Team OSD для MultiWii 2.2
  • GPS: Drotek I2C GPS
  • Радиоприемник: Graupner HoTT GR-16, под мой передатчик (MX-16)

Сборка

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

Сборка коптера в 23 картинках

Детали разложены на столе, сборка начинается. Порядок долго не продержался…

image

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

image

Примеряем зажимы к нижнему центру.

image

Центр собран для проверки, все ли стыкуется как надо. Вроде да.

image

Прикрутил все остальные части рамы. Похоже, что почти готово? Как бы не так.

image

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

image

… и Дремелем его, Дремелем. Дремель режет 3-миллиметровую ось как нож масло. Главное защитные очки нe забыть.

image

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

image

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

image

Размещаем контроллеры на нижней полураме.

image

Прикручиваем мотор и проводим кабеля через трубку. Всe собирается, как запланировано!

image

Изолируем контроллеры новой термоусадкой, когда все кабеля на месте.

image

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

image

Разводка проводов от аккумулятора, методом RCExplorer. Сначала собираем провода от контроллеров пучком…

image

… стягиваем тонкой медной проволокой…

image

… спаиваем, и изолируем термоусадкой. Соединение получается механически крепкое, и хорошо проводящее.

image

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

image

Верхняя полурама с управляющей электроникой в центре (контроллер и GPS) и виброизолированными трубками с камерой и аккумулятором.

image

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

image

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

image

Устанавливаем и прикручиваем верхнюю полураму. Затягиваем гайки, соединяем всe провода…

image

… готово!

Результат сборки:

image

image

image

image

image

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

Первый полет

Ощущения от первого полета: фантастика! Коптер стоит в воздухe как вкопанный, отлично управляется как визуально, так и через FPV. Время полета на одном заряде — 14 минут, и запаса мощности хватает с лихвой для вполнe комфортабельного полета и маневрирования. С настройками контроллера я еще слегка поковыряюсь — GPS работает плохо (позицию практически не держит, return-to-home не работает), да и PID-параметры надо подстроить (убавить P по оси крена, чтобы избавиться от видимых в видео легких поперечных вибраций).

В общем и целом, проект удался. Коптер я буду активно использовать для полетов и съемок в ближайшие недели.

Любые вопросы, комментарии и т.д. приветствуются.

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