Search
Write a publication
Pull to refresh
52
0
Send message

XCP для тех кто хочет, но боится

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

Для тех кто скажет о неуместности подобной информации здесь, хочу отметить что если этот цикл постов не уместен здесь, то для чего тогда нужен Хабр вообще?

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

Миграция фотографий или ещё одна очередь на MySQL

Reading time8 min
Views10K
Недавно мы писали о том, как перед нами впервые встала задача крупномасштабной миграции данных пользователей между дата-центрами и о том как мы ее решили.
В этот раз мы подробнее остановимся на том, каким образом осуществлялась миграция фотографий пользователей и какие структуры данных использовались для ограничения создаваемой нагрузки на сервера с фотографиями.
Ежедневно пользователи Badoo загружают примерно 3 миллиона фотографий. Для их хранения мы выделили специальный кластер серверов, занимающихся также изменением размеров, наложением «водяных знаков», импортом фотографий из других социальных сетей и прочими манипуляциями с файлами.
Все машины этого кластера можно условно разделить на три группы. Первая ― это серверы, отвечающие за быструю отдачу фотографий пользователям (можно сказать, собственная реализация CDN). В контексте миграции эти серверы нам не будут интересны. Вторая группа ― это хранилища с дисками, на которых, собственно, и находятся все фотографии. И третья группа ― это серверы, предоставляющие интерфейс ко второй группе, условно назовём их фотосерверами. На них по оптоволокну смонтированы дисковые массивы хранилищ, на эти же машины происходит загрузка фотографий и здесь же работают все скрипты, выполняющие какие-либо операции с файлами.
Таким образом, для PHP-кода совершенно неважно, на каком именно диске какого хранилища находится фотография. Все, что нужно сделать, это перенести фотографии пользователя с одного фотосервера на другой и обновить эту информацию в базе данных и некоторых демонах. Здесь важно отметить, что все фотографии пользователя всегда находятся на одном фотосервере.
Читать дальше →

Адаптация приложений Windows Phone для больших экранов

Reading time7 min
Views7.1K
Неделю назад в продаже появились планшетофоны Nokia. Обновление операционной системы Windows Phone с маркировкой GDR3 стало поддерживать 4-ядерные процессоры и разрешение экрана до FullHD. Именно с такими характеристиками Nokia выпустила свой новый флагман Lumia 1520. Но производитель не стал просто увеличивать плотность размещения пикселей при тех же размерах экрана, как это сделали в конкурентных моделях на ОС Android компании HTC и Samsung. Nokia выпустила аппарат с диагональю экрана 6 дюймов, немного обогнав даже третью версию родоначальника планшетофонов Galaxy Note. Размер экрана и самого аппарата завораживает и пугает одновременно. Но, отбросив лирику, попытаемся разобраться, как нам, разработчикам, с этим жить.
Читать дальше →

Знакомство с GStreamer: Устройства вывода

Reading time9 min
Views33K
И снова здравствуй, хабраюзер, которому интересен GStreamer! Сегодня мы поговорим про устройства вывода (sink) различных медиаданных, напишем примитивный плеер для прослушивания радио и записи потока в файл, и узнаем много нового.
Устройство вывода (sink) — это элемент для вывода сигнала куда-либо, будь то звуковая карта, файл, видеокарта или сетевой интерфейс. По своей сути, устройство вывода — это полная противоположность источника данных, и, в отличие от источников данных, устройства вывода имеют только один pad — sink.
Рассмотрим устройства вывода подробнее.
Читать дальше →

Знакомство с GStreamer: Введение

Reading time3 min
Views85K

Дисклеймер

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

Преамбула


Многие наверное слышали, что есть такая вещь как GStreamer, или же видели как Ubuntu и ей подобные дистрибутивы предлагают установить различные пакеты, в названии которых содержится «gstreamer» при первой попытке воспроизвести mp3 или какой-нибудь иной файл с «не свободным» форматом медиаданных. Так вот, речь пойдет именно об этой библиотеке.

Введение


GStreamer — мощный фреймворк для построения мультимедийных приложений, который перенял идеи «video pipeline» от Oregon Graduate Institude, а так же что-то взял из DirectShow. Данный фреймворк позволяет создавать приложения различных уровней сложности, начиная от простого консольного плеера (можно воспроизвести какой-нибудь файл прям из терминала без написания какого-либо кода), заканчивая полноценными аудио/видео плеерами, мультимедийными редакторами и прочими приложениями.
Узнать подробности

Знакомство с GStreamer: Источники данных

Reading time10 min
Views77K
Здравствуй, хабраюзер, интересующийся фреймворком GStreamer! Сегодня мы поговорим о источниках медиа-данных (sources), и тем самым продолжим курс статей посвященный GStreamer.

Предыдущая статья: Знакомство с GStreamer: Введение.

Вступление



Источники данных — это класс плагинов GStreamer который позволяет читать медиаданные из различных источников, таких как файловая система или аудио-входы звуковой карты. Также, они позволяют получать медиапоток с различных серверов потокового вещания, такие как HTTP (ICECast, ShoutCast), RTSP, RTMP, TCP и UDP. А еще имеется возможность читать данные с DVB карт, CDDA-дисков (народе известных просто как «компакт-диски»), и еще много всего, при помощи различных плагинов, которых на данный момент около 30.
Примечание: как говорилось в прошлой статье, источники данных имеют только один pad с названием src, так как его можно подключить к другому элементу, но к нему подключить ничего нельзя.

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

Универсальный способ быстро сделать скриншот в linux

Reading time2 min
Views24K

Как дошло до жизни такой


С переходом ubuntu на unity как-то резко пришло просветление и жажда чего-то такого, что не приходилось бы раз в пол года переделывать с нуля. Поставил себе arch, а там дошло до минимализма и нежной любви к xfce.

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

Читать дальше →

Создание удобного OpenFileDialog для Android

Reading time12 min
Views39K
Наверное, как и многие разработчики под Android, столкнулся на днях с необходимостью реализовать в своем приложении выбор файла пользователем. Так как изначально в Android такого функционала нет, обратился к великому и ужасному. Это показалось мне странным, но из вороха вопросов на stackoverflow и небольшого числа отечественных форумов можно выделить всего три основных источника:
  1. Android File Dialog – почти все ссылки из stackoverflow ведут сюда. В принципе, неплохое решение, но реализовано через отдельную activity, а хотелось чего-то в духе OpenFileDialog’а из .Net.
  2. В данной статье речь идет вообще об отдельном файл-менеджере, и почерпнуть какие-то идеи из неё не удалось.
  3. Идея же отсюда очень понравилась, однако, как мне показалось реализовать все это можно несколько красивее.

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

Строим свой Gmail с куртизанками и преферансом

Reading time7 min
Views205K

Вместо предисловия


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

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

Читать дальше →

Облака — ещё дешевле

Reading time5 min
Views116K
Наверняка вы слышали о сервисах Amazon EC2, Rackspace и им подобным. Может быть даже пользовались. Лично мне бывает нужен иногда личный VPN-сервер. Для этих целей я уже давно держал микро-инстанс на Амазоне, предоставляемый им в течении первого года бесплатно. Плюс использовал для архивов Amazon Glacier, который с его ценой «1 цент за гигабайт в месяц» можно считать тоже почти бесплатным. Но вот год закончился и за EC2 стало нужно платить. Архивы мои тоже разрослись прилично и затраты на Glacier аналогично перестали радовать.

Случайно пробежавший мимо обзор сервиса DigitalOcean по-началу оставил меня равнодушным. Ну, облачный сервис, ну виртуалки. Ну да, чуть-чуть дешевле (но не так чтобы уж очень), чего-то аналогичного Glacier вроде бы нет да и вообще оно того не стоит.

Я сильно ошибался. Ниже будет рассказано как на базе DigitalOcean сделать себе VPN-сервер в пару десятков раз дешевле такого же на Амазоне и сервис хранения архивов, в бесконечность раз дешевле Glacier.
Читать дальше →

Кроссплатформенный канделябр

Reading time9 min
Views14K
В статье GameDev и канделябр мы описали процесс портирования игры Марьяж под Android. Игра вышла достаточно успешной и практически сразу после релиза мы начали планировать кроссплатформенную версию с дальнейшим прицелом на онлайн. В качестве платформы была выбрана unity3d. Процесс разработки занял около шести месяцев.

Интересно? Заходите под кат!
Читать дальше →

Десктоп в домашнем сервере или «всё-в-одном»

Reading time4 min
Views89K
image
Цель: недорого собрать систему поддерживающую проброс PCI-устройств в виртуальную машину (c IOMMU). Создать полноценное рабочее место, поднять виртуальный маршрутизатор и еще полезные мелочи.
Читать дальше →

Использование сканера уязвимостей OpenVAS

Reading time4 min
Views160K
Сканеры уязвимостей — это программные или аппаратные средства, служащие для осуществления диагностики и мониторинга сетевых компьютеров, позволяющее сканировать сети, компьютеры и приложения на предмет обнаружения возможных проблем в системе безопасности, оценивать и устранять уязвимости. (Википедия).
Известными коммерческими сканерами являются Nessus, GFI LANguard, XSpider.

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

Читать дальше →

Система мониторинга OpenNMS

Reading time8 min
Views65K
image

Ни в малейшей степени не желаю показаться непатриотичным, но исторически сложилось так, что при выборе корпоративной системы мониторинга сетевой инфраструктуры у нас на предприятии победила OpenNMS, сместив с этой должности бабушку Cacti и обогнав земляка-Zabbix. Сравнительный анализ Open Source систем мониторинга не входит в мои планы, поэтому просто в общих чертах расскажу об OpenNMS, благо на Хабре о ней не писали и вообще информации о ней немного.
Восстановим равновесие

Cобираем звуковую станцию на базе Linux и MPD

Reading time11 min
Views87K


В основе референсного аудиопроигрывателя Bryston BDP–2 стоимостью, на минуточку, 156 тысяч рублей лежит стандартная материнка с процессором Intel Atom и звуковой картой ESI Juli@ PCI. В качестве ОС для этого плеера разработчики выбрали Debian Linux. При наличии времени и желания можно собрать аналогичный цифровой источник из имеющегося железа, а с установкой нужного ПО и тонкой настройкой параметров системы тебе поможет эта статья.
Подробности

Собираем удобную документацию для CMake

Reading time9 min
Views12K

Всем привет!

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

Проблема одновременного использование kernel raid autodetect для / на /dev/md0 и superblock v1.2 для других /dev/md, или как можно уронить (и поднять) сервер после его обновления

Reading time3 min
Views8K

Спасибо, что дочитали заголовок. Это был тест.


Сегодня, после наката очередных обновления на свой любимый Gentoo сервер и профилактического reboot'a, внезапно, отвалился /dev/md1 со словами мудрого ядра: sdc1 does not have a valid v0.90 superblock, not importing!

Шок! Паника! хорошо, что не в ядре…

А в чём, собственно, дело?


Для начала расскажу о конфигурации сервера, чтобы было легче понять суть проблемы и способ её решения. Итак, ядро 3.10.7 с включённым RAID autodetect и двумя RAID1 (зеркало) дисками.

На /dev/md0 монтируется root, на /dev/md1 база данных (Percona):
db13 ~ # cat /etc/fstab | grep md
/dev/md0                /               ext3            noatime         0 1
/dev/md1                /mnt/db         reiser4         noatime         0 0

И кусочек /boot/grub/grub.conf:
title Gentoo Linux 3.10.7 md0
root (hd0,0)
kernel /boot/kernel-3.10.7 root=/dev/md0

Так вот, для успешной сборки md устройств ядром во время загрузки должно быть выполнено два условия:
  1. Тип 0xFD у партиций, на которых строится RAID
  2. Версия формата superblock 0.90 на устройстве /dev/md, которое создается при помощи mdadm

Если с п.1. в моей конфигурации все было хорошо, то, как оказалось, формат superblock был 1.2 Подозреваю, что /dev/md1 я создавал после того, как пришла новая версия mdadm, которая по-умолчанию использует именно этот формат. Как результат, ядро ругается страшными словами:
dmesg | grep md
[    0.000000] Command line: root=/dev/md0 raid=/dev/md0
[    0.000000] Kernel command line: root=/dev/md0 raid=/dev/md0
[    1.063603] md: raid1 personality registered for level 1
[    1.266420] md: Waiting for all devices to be available before autodetect
[    1.266494] md: If you don't use raid, use raid=noautodetect
[    1.266781] md: Autodetecting RAID arrays.
[    1.293670] md: invalid raid superblock magic on sdc1
[    1.294210] md: sdc1 does not have a valid v0.90 superblock, not importing!
[    1.312482] md: invalid raid superblock magic on sdd1
[    1.312556] md: sdd1 does not have a valid v0.90 superblock, not importing!
[    1.312579] md: Scanned 4 and added 2 devices.
[    1.312595] md: autorun ...
[    1.312610] md: considering sdb3 ...
[    1.312626] md:  adding sdb3 ...
[    1.312641] md:  adding sda3 ...
[    1.312657] md: created md0
[    1.312665] md: bind<sda3>
[    1.312754] md: bind<sdb3>
[    1.312770] md: running: <sdb3><sda3>
[    1.313064] md/raid1:md0: active with 2 out of 2 mirrors
[    1.313166] md0: detected capacity change from 0 to 7984840704
[    1.313262] md: ... autorun DONE.
[    1.320413]  md0: unknown partition table
[    1.338528] EXT3-fs (md0): mounted filesystem with ordered data mode
[    2.581420] systemd-udevd[861]: starting version 208
[    3.122748] md: bind<sdc1>
[    4.896331] EXT3-fs (md0): using internal journal


Когда не помогает Google


Выбор совсем небольшой — либо отключать автоопределение массивов в ядре (перекомпиляция и правки в grub.conf), либо изменять формат суперблока (полный бэкап данных и убийство зеркала с последующим его восстановлением). Оба варианта «не вариант», так как по сути своей деструктивны и могут привести к потери данных, да и времени могут занять немало (как выяснилось в процессе поиска решения kernel autodetect is depricated feature)

К слову сказать, после старта севрера /dev/md1 прекрасно запускается при помощи команды
mdadm --manage /dev/md1 --run
. Конечно, можно было бы прописать эту строчку куда-нибудь в rc-скрипты, но, согласитесь, это как-то не спортивно.

Эврика!


Решение пришло не сразу, хотя лежало на поверхности — всё, что нужно сделать, это убрать тип 0xFD (заменить на 0х83) у дисков в /dev/md1 и тогда ядро перестанет безуспешно пытаться собрать этот массив, мешая при этом udevd делать свою работу. И действительно, после применения fdisk для изменения типа партиций на обеих зеркалах и перезагрузки сервера, все чудесным образом завелось:
dmesg | grep md
[    0.000000] Command line: root=/dev/md0 raid=/dev/md0
[    0.000000] Kernel command line: root=/dev/md0 raid=/dev/md0
[    1.063924] md: raid1 personality registered for level 1
[    1.248078] md: Waiting for all devices to be available before autodetect
[    1.248201] md: If you don't use raid, use raid=noautodetect
[    1.248504] md: Autodetecting RAID arrays.
[    1.265058] md: Scanned 2 and added 2 devices.
[    1.265243] md: autorun ...
[    1.265258] md: considering sda3 ...
[    1.265274] md:  adding sda3 ...
[    1.265290] md:  adding sdb3 ...
[    1.265305] md: created md0
[    1.265321] md: bind<sdb3>
[    1.265331] md: bind<sda3>
[    1.265428] md: running: <sda3><sdb3>
[    1.265865] md/raid1:md0: active with 2 out of 2 mirrors
[    1.265891] md0: detected capacity change from 0 to 7984840704
[    1.266068] md: ... autorun DONE.
[    1.276627]  md0: unknown partition table
[    1.294892] EXT3-fs (md0): mounted filesystem with ordered data mode
[    2.713383] systemd-udevd[860]: starting version 208
[    3.128295] md: bind<sdc1>
[    3.159107] md: bind<sdd1>
[    3.170320] md/raid1:md1: active with 2 out of 2 mirrors
[    3.170333] md1: detected capacity change from 0 to 17170300928
[    3.178113]  md1: unknown partition table
[    4.911712] EXT3-fs (md0): using internal journal
[    5.027077] reiser4: md1: found disk format 4.0.0.


Буду рад, если Google, найдя этот текст, покажет его моим коллегам по цеху, попавшим в похожую ситуацию.

WOW CSS

Reading time2 min
Views38K
Доброго времени суток, уважаемые хабравчане. Не так уж давно, для того чтобы сделать что-то «округленное» с нефиксированной высотой приходилось создавать таблицу и крайним ячейкам в бэкграунд задавать нарезанные углы. Вообще любое «непрямоугольное» могло быть только графическим изображением. Сейчас же современные стандарты CSS позволяют создавать весьма интересные вещи. Но все нетипичные фигуры в большинстве своем дозволено сделать благодаря псевдо-селекторам :before и :after. Даже существуют некоторые «паттерны» для этого. А в недалеком будущем появится возможность задавать любые формы для элементов. С приходом CSS Masking я бы сказал наступит веб-дизайнерская сингулярность — веб-дизайн сможет быть любым. Единственное ограничение — это предел фантазии дизайнера. Но не будем о будущем. Все же я предлагаю вдохновиться прекрасным настоящим. В этом посте я собрал несколько крутых CSS реализаций. В некоторых из них спрятаны полезные техники, а в других любовь к CSS творчеству авторов этих подделок.

Не для таких же как и я каскадных зануд хочу добавить, что CSS изобретения могут быть и коммерчески выгодными. Только присутствие в CSSAWARDS, СSSWINNER, CSSREEL или CSSDESIGNAWARDS будет неплохой рекламой.

Таймер на чистом CSS




Читать дальше →

Как я вешал горячие клавиши на Unity sound indicator

Reading time9 min
Views4.4K
Я, как и многие, кого мог заинтересовать этот пост, люблю оболочку Unity за удобные горячие клавиши и различные плюшки по интеграции с самым разнообразным софтом.
Одна из этих плюшек — это интеграция плееров поддерживающих интерфейс mpris2 в sound indicator.
Для тех, кто не знает что такое этот sound indicator
Это значек с динамиком в панели индикаторов, сразу слева от часов:
image image

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

Создание игр для Windows Store c использованием WebGL

Reading time11 min
Views15K
Windows Store на текущий момент, возможно, самая открытая платформа для игровых студий. Для создания приложений вы можете использовать DirectX 11, HTML5 2d-Canvas, Cocos2D-X, Unity3D и с выходом Windows 8.1 даже для WebGL!
Если у вас есть интерес к некоторым из этих технологий, вы можете посмотреть статью How to develop a game for Windows 8 modern UI в которой перечислены ссылки на ресурсы по технологиям DirectX, HTML5 canvas 2d и MonoGame.
Так же хотелось бы отметить что аддон для Unity который позволяет публиковать приложения в Windows Store бесплатен: http://unity3d.com/pages/windows: So any Unity developers can port their 2D and 3D content to Windows Store and Windows Phone 8 for free. Начать изучение разработки Unity для Windows Store можно с цикла видео Building Windows Games with Unity.
В дополнение к этому, так же хотелось бы отметить что Cocos2D-X был недавно обновлен для более лучшей поддержки Windows 8 и Windows Phone 8: Easily port your Cocos2D-X game to Windows 8 and Windows Phone 8.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity