Павлов Дмитрий @Dimonyga
System architect
+396
Медиацентр собственными руками
3 min
5.6KПредисловие
Как то раз за кружечкой пива рассказал другу об идее создания своего медиацентра из барахла что скопился на работе.
Задачи которые должен решать:
- проигрывать любое видео
- звук 5.1
- тишина в студии
- подключение к локальной сети
- скачивание торрентов
- управлялся с помощью пульта
- сидя на диванчике ползать по интернету с беспроводной клавиатурой и мышью
- ремонтопригодность
Оказалось, он уже давно хотел собрать такое чудо и есть для этого старый корпус от умершего караоке.
+5
Делаем загрузочно-установочную флешку
2 min
775KПосле поста о восстановлении флешек, оказалось, что у многих теперь есть рабочие, бесхозные флешки, которые обязательно нужно задействовать. Почему бы не сделать из них загрузочные флешки с дистрибутивами необходимых ОС? Это может здорово пригодиться при установке/переустановке операционных систем на нетбуки, где отсутствуют приводы оптических носителей. А иногда может даже ускорить процесс установки и сделать его намного тише на компьютере, где привод есть.
Хотя на Хабре уже описывались варианты создания загрузочных флешек, но вариант, который предлагаю я — слишком прост и по своему универсален, чтобы обойти его стороной.

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

+123
Rounded corners HTML+CSS+jQuery
1 min
1.2KЗакругленные уголки опять волнуют хабравчан, за последние 24 часа наблюдал 2 интересных топика с различными способа закругления этих самых уголков. Решил показать то, чем пользуюсь сам.
Сразу хочу оговориться, что я не претендую на уникальность данного способа, но додумался до него сам.

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

+16
+38
Контроллер двигателя = ATMega8+L293D+DCDC
2 min
23KКак и обещал, выкладываю силовую часть робота. Она уже встала в шасси на боевое дежурство, так что больше изменений не планируется.

Шасси в сборе
Блок питания.
У нас же стоит свинцовый аккумулятор на 12 вольт, а контроллеру нужно 5 вольт. Вот я и сварганил импульсный блок питания. Можно было, конечно, поставить какой нибудь LM7805 (как у меня на макетке) и на нем сбросить напряжение, но это тупой метод. Дело все в том, что разницу напряжений LM7805 отрыгнет в виде тепла. Так что КПД данного девайса будет ниже 50%, а питание у нас батарейное. Так что выход один — это DC-DC преобразование. В качестве контроллера взял проверенный временем, популярный, доступный и дешевый MC33063A. Изобретать ничего не стал и взял типовую понижающую схему (Step — Down) из его даташита.

Шасси в сборе
Блок питания.
У нас же стоит свинцовый аккумулятор на 12 вольт, а контроллеру нужно 5 вольт. Вот я и сварганил импульсный блок питания. Можно было, конечно, поставить какой нибудь LM7805 (как у меня на макетке) и на нем сбросить напряжение, но это тупой метод. Дело все в том, что разницу напряжений LM7805 отрыгнет в виде тепла. Так что КПД данного девайса будет ниже 50%, а питание у нас батарейное. Так что выход один — это DC-DC преобразование. В качестве контроллера взял проверенный временем, популярный, доступный и дешевый MC33063A. Изобретать ничего не стал и взял типовую понижающую схему (Step — Down) из его даташита.
+98
Вышла операционная система Qubes 2 на основе гипервизора Xen
1 min
66KНесколько дней назад вышла операционная система Qubes 2, нацеленная на максимальную безопасность в использовании. В основе Qubes лежит идея запуска отдельных виртуальных машин для обеспечения изоляции пользовательских приложений. В качестве системы виртуализации используется Xen.


+70
Puppet под нагрузкой
6 min
33K
Базовой информации о самой системе много, в том числе и на Хабре: здесь, здесь и здесь. Мы же постарались собрать в одной статье несколько «рецептов» использования Puppet под действительно большими нагрузками — в «боевых условиях» Badoo.
О чём пойдет речь:
- Puppet: ликбез;
- кластеризация, масштабирование;
- асинхронный Storeconfigs;
- сбор отчётов;
- анализ полученных данных.
+62
Как правильно мерять производительность диска
14 min
354KTutorial
abstract: разница между текущей производительностью и производительностью теоретической; latency и IOPS, понятие независимости дисковой нагрузки; подготовка тестирования; типовые параметры тестирования; практическое copypaste howto.
Предупреждение: много букв, долго читать.

Очень частой проблемой, является попытка понять «насколько быстрый сервер?» Среди всех тестов наиболее жалко выглядят попытки оценить производительность дисковой подсистемы. Вот ужасы, которые я видел в своей жизни:
Это всё совершенно ошибочные методы. Дальше я разберу более тонкие ошибки измерения, но в отношении этих тестов могу сказать только одно — выкиньте и не используйте.
Предупреждение: много букв, долго читать.
Лирика

Очень частой проблемой, является попытка понять «насколько быстрый сервер?» Среди всех тестов наиболее жалко выглядят попытки оценить производительность дисковой подсистемы. Вот ужасы, которые я видел в своей жизни:
- научная публикация, в которой скорость кластерной FS оценивали с помощью dd (и включенным файловым кешем, то есть без опции direct)
- использование bonnie++
- использование iozone
- использование пачки cp с измерениема времени выполнения
- использование iometer с dynamo на 64-битных системах
Это всё совершенно ошибочные методы. Дальше я разберу более тонкие ошибки измерения, но в отношении этих тестов могу сказать только одно — выкиньте и не используйте.
+139
Загрузка виртуальных linux-машин с диска без разделов
5 min
19KПри создании корневых дисков виртуальных машин, обычно, на них с помощью fdisk/gdisk создается таблица разделов с единственным разделом для размещения на нем операционной системы. Это порождает некоторые неприятности на стороне гипервизора, например:
Избавиться от таблицы разделов можно прямой загрузкой ядра, но этот метод не безгрешен. Гипервизор должен иметь на своей стороне образы ядер виртуальных машин, которые нужно поддерживать актуальными при обновлениях гостевых ОС.
Хочу рассказать вам об альтернативном варианте загрузки с диска без разделов с помощью EFI и GRUB2.
- При монтировании диска нужно помнить, что монтируется не само блочное устройство, а раздел на нем. Проблема усугубляется если используется lvm-диск — ядро не видит разделы на нем без применения средств убеждения в виде kpartx.
- Для восстановления раздела требуется не только резервная копия файловой системы, но и бубен/копия первого трека.
- Изменение размера такого диска требует
еще одного бубналишней операции по изменению размера раздела на диске
Избавиться от таблицы разделов можно прямой загрузкой ядра, но этот метод не безгрешен. Гипервизор должен иметь на своей стороне образы ядер виртуальных машин, которые нужно поддерживать актуальными при обновлениях гостевых ОС.
Хочу рассказать вам об альтернативном варианте загрузки с диска без разделов с помощью EFI и GRUB2.
+10
«Идеальный» www кластер. Часть 1. Frontend: NGINX + Keepalived (vrrp) на CentOS
9 min
113K
Этом цикле статей «Идеальный www кластер», я хочу передать базовые основы построения высокодоступного и высокопроизводительного www решения для нагруженных web проектов для неподготовленного администратора.
Статья будет содержать пошаговую инструкцию и подойдет любому человеку кто освоил силу copy-paste
Ошибки найденые вами, помогут в работе и мне и тем кто будет читать эту статью позже! Так что любые улучшение и правки приветствуются!
Хочу отметить, что эта инструкция родилась в процессе миграции web-систем компании Acronis в высокодоступный кластер. Надеюсь мои заметки будут полезны и для Вас!.
В процессе экспертизы и проведенных мною исследований, она доказала свое право на жизнь и благополучно служит нам верой и правдой день ото дня.
На frontend мы будем использоваться связку из двух службы:
keepalived — реализации протокола VRRP (Virtual Router Redundancy Protocol) для Linux. Демон keepalived следит за работоспособностью машин и в случае обнаружения сбоя — исключает сбойный сервер из списка активных серверов, делегируя его адреса другому серверу.
Другими словами, у нас 2 сервера на которых прописано по одному публичному адресу. Если любой из этих серверов падает, то адрес упавшего подхватывается вторым.
Демоны keepalived общаются по протоколу VRRP, посылая друг другу сообщения на адрес 224.0.0.18.
Если сосед не прислал свое сообщение, то по истечению периода он считается умершим и оба адреса обслуживает оставшаяся нода. Как только упавший сервер начинает слать свои сообщения в сеть, все возвращается на свои места
nginx [engine x] — это HTTP-сервер и обратный прокси-сервер, а также почтовый прокси-сервер, написанный Игорем Сысоевым. Уже длительное время он обслуживает серверы многих высоконагруженных российских сайтов, таких как Яндекс, Mail.Ru, ВКонтакте и Рамблер. Согласно статистике Netcraft nginx обслуживал или проксировал 15.08% самых нагруженных сайтов в октябре 2013 года.
Основная функциональность HTTP-сервера
- Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов;
- Акселерированное обратное проксирование с кэшированием, простое распределение нагрузки и отказоустойчивость;
- Акселерированная поддержка FastCGI, uwsgi, SCGI и memcached серверов с кэшированием, простое распределение нагрузки и отказоустойчивость;
- Модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, XSLT-фильтр, SSI-фильтр, преобразование изображений; несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно;
- Поддержка SSL и расширения TLS SNI.
Другие возможности HTTP-сервера
- Виртуальные серверы, определяемые по IP-адресу и имени;
- Поддержка keep-alive и pipelined соединений;
- Гибкость конфигурации;
- Изменение настроек и обновление исполняемого файла без перерыва в обслуживании клиентов;
- Настройка форматов логов, буферизованная запись в лог, быстрая ротация логов;
- Специальные страницы для ошибок 3xx-5xx;
- rewrite-модуль: изменение URI с помощью регулярных выражений;
- Выполнение разных функций в зависимости от адреса клиента;
- Ограничение доступа в зависимости от адреса клиента, по паролю (HTTP Basic аутентификация) и по результату подзапроса;
- Проверка HTTP referer;
- Методы PUT, DELETE, MKCOL, COPY и MOVE;
- FLV и MP4 стриминг;
- Ограничение скорости отдачи ответов;
- Ограничение числа одновременных соединений и запросов с одного адреса;
- Встроенный Perl.
+34
Собственное корпоративное облако ownCloud с NGINX во frontend и несколькими серверами backend
7 min
40KTutorial
1. Схема
Имеем:
- Frontend — NGINX проксирующий сервер для принятия и распределения нагрузки (IP — 1.2.3.4 — внешний, IP — 192.168.5.10 — внутренний DMZ) по хорошему он тоже должен стоять за firewall-ом, но тут схема для простоты понимания.
- Два сервера с поднятыми ownCloud
- cloud-1 IP — 192.168.1.11
- cloud-2 IP — 192.168.1.12
- Хранилище файлов NFS-storage IP — 192.168.1.20 для размещения данных пользователей с доступом по NFS.

+18
Flowplayer — Open source Flash плеер
1 min
31K
Flowplayer — Бесплатный видео-плеер для веба
FlowPlayer — это Flash медиа плеер. Вы можете использовать его нв ваших HTML страницах чтобы воспроизводить видео файлы. «Это ваш персональный YouTube».
+44
Разработка видеохостинга на Erlang
12 min
19KПредставляем вашему вниманию доклад Максима Лапшина, сделанный им на конференции Application Developer Days. Мы собрали воедино видео и аудио, слайды презентации, а также стенограмму доклада. Последнее потребовало огромных усилий, но оно явно того стоит. Сорокаминутный доклад можно «услышать» в несколько раз быстрее.
Свел видео и презентацию в единый ролик, а также записал стенограмму Стас Фомин (человек ипароход локомотив :)).
Свел видео и презентацию в единый ролик, а также записал стенограмму Стас Фомин (человек и
+65
Знакомство с GStreamer: Введение
3 min
85KTutorial

Дисклеймер
Данная статья ориентирована на начинающих программистов, которые не знакомы с GStreamer и хотят с ним познакомиться. Опытные разработчики навряд ли найдут для себя что-то новое в этой статье.
Преамбула
Многие наверное слышали, что есть такая вещь как GStreamer, или же видели как Ubuntu и ей подобные дистрибутивы предлагают установить различные пакеты, в названии которых содержится «gstreamer» при первой попытке воспроизвести mp3 или какой-нибудь иной файл с «не свободным» форматом медиаданных. Так вот, речь пойдет именно об этой библиотеке.
Введение
GStreamer — мощный фреймворк для построения мультимедийных приложений, который перенял идеи «video pipeline» от Oregon Graduate Institude, а так же что-то взял из DirectShow. Данный фреймворк позволяет создавать приложения различных уровней сложности, начиная от простого консольного плеера (можно воспроизвести какой-нибудь файл прям из терминала без написания какого-либо кода), заканчивая полноценными аудио/видео плеерами, мультимедийными редакторами и прочими приложениями.
+48
Зд-принтер: Взгляд со стороны головы
15 min
90KОбщий взгляд — как их использовать, родные аналогии. Скромная реальность. Только FDM, только домашний, живьём — зато изнутри и подробно. Хотэнд? В разрезе, с зонами и графиком температур. Достоинства и недостатки, свойства различных решений при конструировании печатающих головок. Особенности печати триммерной леской, и опыты по получению таблиц оптимальных настроек скоростной печати капроном(нейлоном). Выводы из них. Об организации хорошей подачи капронового прутка в экструдере. Всё очень захватывающе и драматично.
Про 3Д-принтеры сейчас пишут много, пишут с восторгом, описывается множество моделей и технологий, а так же множество их умений. И вот, стою я перед Вами, простой русский мужик из Литвы (С), с 3Д-принтером. Конечно, собрал его сам. Не из набора — полтора года назад наборов было мало, и они были дороги. Всё планировал и выбирал сам, ориентируясь исключительно на Интернет. Но я не об этом хочу рассказать, я хочу рассказать о том, что было потом — после его постройки, и думается вопросы — Зачем это? — Что он может делать? — Почему его покупают? — задают себе многие люди увлечённые техникой.
Давайте по-порядку: сначала я его строил. Это было очень интересно, в том плане, что приходилось постоянно решать множество технических вопросов, находить причины нештатной работы — путём вычисления, зачастую по косвенным признакам. Этакая игра в технические загадки. Заработало. Налаживал. Увидел порядочно возможных усовершенствований. Сделал несколько — с большим удовольствием. Потом разработал реально удобный узел концевого датчика для принтера. Его я даже один раз продал. Ну, комплект датчиков — на этом не разбогатеешь, но зато, какое удовольствие я получил от искренней благодарности покупателя. Повозившись с печатающей головкой — убедился, что она, несмотря на хорошее качество изготовления ( брэндовая MK IV) имеет и ряд недостатков. Да и была она только одна — а покупать ещё, дорого. Разработал свою — будете смеяться, с первого раза что-то получилось, хоть и не идеально. Правда, я ведь не так слепил, а внимательно изучил, что имелось, почитал, что пишут, и только тогда сделал. Потом стал разбираться. Ставить опыты. Был долгий перерыв — разочарование и депрессия, но это не связано с принтерами, так, соломинка подломившая спину слону. Сейчас у меня 4 головки, разных диаметров и принтер печатает в три раза быстрее, чем считается нормальным и печатает слоем 150 микрон. Причём печатает не дорогим импортным филаментом, а дешёвой леской для триммеров. Получается очень-очень прочно, хотя и не без хитростей.

Про 3Д-принтеры сейчас пишут много, пишут с восторгом, описывается множество моделей и технологий, а так же множество их умений. И вот, стою я перед Вами, простой русский мужик из Литвы (С), с 3Д-принтером. Конечно, собрал его сам. Не из набора — полтора года назад наборов было мало, и они были дороги. Всё планировал и выбирал сам, ориентируясь исключительно на Интернет. Но я не об этом хочу рассказать, я хочу рассказать о том, что было потом — после его постройки, и думается вопросы — Зачем это? — Что он может делать? — Почему его покупают? — задают себе многие люди увлечённые техникой.
Давайте по-порядку: сначала я его строил. Это было очень интересно, в том плане, что приходилось постоянно решать множество технических вопросов, находить причины нештатной работы — путём вычисления, зачастую по косвенным признакам. Этакая игра в технические загадки. Заработало. Налаживал. Увидел порядочно возможных усовершенствований. Сделал несколько — с большим удовольствием. Потом разработал реально удобный узел концевого датчика для принтера. Его я даже один раз продал. Ну, комплект датчиков — на этом не разбогатеешь, но зато, какое удовольствие я получил от искренней благодарности покупателя. Повозившись с печатающей головкой — убедился, что она, несмотря на хорошее качество изготовления ( брэндовая MK IV) имеет и ряд недостатков. Да и была она только одна — а покупать ещё, дорого. Разработал свою — будете смеяться, с первого раза что-то получилось, хоть и не идеально. Правда, я ведь не так слепил, а внимательно изучил, что имелось, почитал, что пишут, и только тогда сделал. Потом стал разбираться. Ставить опыты. Был долгий перерыв — разочарование и депрессия, но это не связано с принтерами, так, соломинка подломившая спину слону. Сейчас у меня 4 головки, разных диаметров и принтер печатает в три раза быстрее, чем считается нормальным и печатает слоем 150 микрон. Причём печатает не дорогим импортным филаментом, а дешёвой леской для триммеров. Получается очень-очень прочно, хотя и не без хитростей.

+81
Flashcache: первый опыт
6 min
9KДисковая подсистема зачастую является узким местом в производительности серверов, заставляя компании вкладывать значительные средства в быстрые диски и специализированные решения. В настоящее время всё больше набирают популярность твердотельные SSD-накопители, но они всё ещё слишком дороги по сравнению с традиционными жёсткими дисками. Тем не менее, существуют технологии, разработанные для того, чтобы сочетать скорость SSD с объёмом HDD. Это технологии кэширования, когда объём дискового кэша на SSD составляет гигабайты, а не мегабайты кэша HDD или контроллера.
Одна из таких технологий — flashcache, разработанная в Facebook для использования со своими базами данных, и которая теперь распространяется с открытым исходным кодом. Я уже давно присматривался к ней. Наконец, подвернулась возможность протестировать её, когда я решил поставить в домашний компьютер SSD-накопитель в качестве системного диска.
И, прежде чем ставить SSD в домашний комп, я подключил его к серверу, который как раз оказался свободным для тестирования. Далее я опишу процесс установки flashcache на ОС CentOS 6.3 и приведу результаты некоторых тестов.
Одна из таких технологий — flashcache, разработанная в Facebook для использования со своими базами данных, и которая теперь распространяется с открытым исходным кодом. Я уже давно присматривался к ней. Наконец, подвернулась возможность протестировать её, когда я решил поставить в домашний компьютер SSD-накопитель в качестве системного диска.
И, прежде чем ставить SSD в домашний комп, я подключил его к серверу, который как раз оказался свободным для тестирования. Далее я опишу процесс установки flashcache на ОС CentOS 6.3 и приведу результаты некоторых тестов.
+22
Шейдеры для маглов
6 min
75KTutorial
Recovery Mode
Предыстория
Вышла книга Ламмерса на русском, астрологи предсказывают…
На конференции DevGAMM я купил задорого книгу Кенни Ламмерса в которой впоследствии расписались: Симонов, Галёнкик и Придюк. Вальяжно за два вечера я-таки добил её до середины и решил: собрать всё то что там написано в начале, переварить, нарисовать картинок и написать статью.

Статья предназначена для совсем новичков которые с трудом код на C# из уроков копируют, по этому я не буду углубляться в теорию которая и так уже описана. За место этого мы будем решать практические задачи и узнаем что шейдеры нужны не только что бы: «Всё сверкало и блестело».
+25
Переход на Percona XtraDB Cluster. Одна из возможных конфигураций
7 min
30KИтак, я начал внедрять в своей организации Percona XtraDB Cluster — переводить базы данных с обычного MySQL сервера в кластерную архитектуру.
В кластере нам нужно держать:
Иными словами, БД практически всех наших проектов, из тех что крутятся у нас на MySQL, теперь должны жить в кластере.
Большинство проектов мы держим удаленно в ДЦ, поэтому и кластер будет находится там.
Задача разнести кластер географически по разным дата-центрам не стоит.
Коротко о задаче и вводные данные
В кластере нам нужно держать:
- БД нескольких веб-сайтов с пользователями
- БД со статистическими данными этих пользователей
- БД для тикет-систем, систем управления проектами и прочая мелочь
Иными словами, БД практически всех наших проектов, из тех что крутятся у нас на MySQL, теперь должны жить в кластере.
Большинство проектов мы держим удаленно в ДЦ, поэтому и кластер будет находится там.
Задача разнести кластер географически по разным дата-центрам не стоит.
+27
Information
- Rating
- Does not participate
- Location
- Вильнюс, Литва, Литва
- Date of birth
- Registered
- Activity