Pull to refresh
0
Karma
0
Rating
Дмитрий Белякин @nightvision

Инженер-программист

  • Followers 1
  • Following 1
  • Posts
  • Comments

Юникастовая маршрутизация мультикаст-трафика

Open source *System Programming *C *Development of communication systems *Development for Linux *
Sandbox

Предисловие


Недавно мною было замечено, что при просмотре мультикастового IPTV через Wi-Fi часть трафика теряется. После детального изучения проблемы было выяснено, что такое поведение объясняется природой мультикаст-трафика, а именно – MAC-адрес получателя пакета. Он не зависит от получателя и формируется из адреса мультикаст-группы. Соответственно, на такие пакеты претендуют все клиенты, подключенные к беспроводной точке доступа. Вследствие этого нам достается лишь часть пакетов и мы видим обрывистую картинку.

Штатными средствами проблема решается либо созданием отдельной точки доступа для клиента, либо созданием статического маршрута для определенных мультикаст-групп, или же выведением клиента в отдельный VLAN. Вся “сила” таких решений проявится, когда в сети будет несколько IPTV-приставок, желающих посмотреть один и тот же канал, плюс необходимость их в интернете добавит сложность к настройке роутера. Свое решение данной проблемы предлагаю ниже.
Читать дальше →
Total votes 11: ↑9 and ↓2 +7
Views 12K
Comments 27

Ускоряем отладку и прототипирование мобильных QML-приложений на живом устройстве

Development of mobile applications *Qt *Development for Android *
Привет.

Хочу поделиться простым способом оптимизации своего рабочего времени при разработке QML приложений под Android/iOS/Embedded.

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

Суть проблемы — при разработке, отладке или прототипировании любого мобильного приложения на любом языке мы как правило всегда проходим одни и те же этапы: правка кода, деплой, запуск. И так до бесконечности. В случае с мобильной разработкой, этап деплоя кода может растянуться на внушительное время — от 2 до 10 минут, в течение которого заниматься в общем-то нечем. Возможно для кого-то это и хорошо, но точно не для тех, кто ценит своё время. В общем, думаю, не только меня выбешивает такое положение вещей ;-)

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

Qt на первый взгляд обладает той же проблемой — каждый новый билд проекта также деплоится на устройство продолжительное время. Вот только есть одна особенность — мы ведь можем писать приложения не на Qt/C++, а на чистом QML. В этом случае, если мы не меняем логику в C++ части приложения, нам ничего не нужно компилировать под целевую платформу. А значит — было бы круто просто обновлять набор qml файлов приложения и перезапускать приложение на устройстве. Ведь экономия времени на 10 запусков составила бы не менее часа!

Ну что ж, раз есть потенциальная возможность — грех ею не воспользоваться. Читайте под катом, что у меня получилось.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 12K
Comments 15

Маленькая C-функция из преисподней

Programming *C *
Недавно мой студент и я пытались понять одну тонкость в стандарте C. Самый простой способ прояснить подобные вопросы — это узнать, учли ли её разработчики компиляторов, то есть написать код и посмотреть, что с ним будут делать разные компиляторы.

Я написал такую функцию:
int foo (char x) {
  char y = x;
  return ++x > y;
}

Так как ++x увеличивает на 1 значение x, очевидно, что функция должна возвращать "1" для большинства значений x. Вопрос состоит в том, что она вернет для значения CHAR_MAX?

Читать дальше →
Total votes 109: ↑98 and ↓11 +87
Views 3.2K
Comments 32

Введение в оптимизацию. Имитация отжига

Algorithms *Mathematics *
Sandbox
В этой статье я постараюсь максимально доходчиво рассказать о таком простом, но эффективном методе оптимизации, как имитация отжига (simulated annealing). А чтобы не быть причисленным к далёким от практики любителям теоретизировать, я покажу как применить этот метод для решения задачи коммивояжёра.

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

image


Читать дальше →
Total votes 148: ↑138 and ↓10 +128
Views 152K
Comments 37

Скрипт, обрабатывающий события системы с помощю DBus

*nix *
Dbus — средство межпроцессного взаимодействия. Другими словами, средство позволяющее одной программе «отдавать приказы» другой программе.
В сети легко найти примеры, как из командной строки с помощью DBus управлять различными программами. Но слабо раскрыта тема, как отслеживать сигналы исходящие от других программ. В данной статье хочу исправить эту несправедливость и разобрать пример обработки событий получаемых от системы посредством Dbus.
Читать дальше →
Total votes 32: ↑28 and ↓4 +24
Views 16K
Comments 10

Плюсы и минусы работы в сфере IT, если ты девушка

IT career
Sandbox
Недавно на Хабре был опубликован пост «Как выглядит рабочий день IT-инженера, если ты девушка». Я была удивлена, что эта тема настолько интересна хабровчанам и мало того, в комментариях многие просят раскрыть сей вопрос более подробно.

Что ж, расскажу свою версию событий.
Читать дальше →
Total votes 226: ↑183 and ↓43 +140
Views 144K
Comments 133

Ну и где сборка для Linux?

Opera corporate blog Opera

Что же вы раньше не спросили, вот она: Opera для Linux.
Да, всё верно — сегодня мы выпускаем первую сборку новой Opera для Linux на канале Developer.

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

Как вы понимаете, это канал Developer, поэтому от этой сборки стоит ожидать соответствующего уровня стабильности. Несмотря на это, многие из нас используют эту сборку уже давно как основной браузер и она кажется вполне стабильной. Так что смелее — пробуйте и пишите нам, если что-то сломалось.
Читать дальше →
Total votes 113: ↑85 and ↓28 +57
Views 40K
Comments 242

Сидим, никого не трогаем, старые наушники починяем

DIY
Sandbox
Вот и наступил момент, когда очередные наушники вышли из строя. Работали бы сто лет, но самое слабое место современных наушников — провод в районе разъёма — опять дало о себе знать. Опять в магазин? Ну уж нет, слишком руки прямые. К тому же придётся искать точно такую модель, что непросто, ибо вкладыши постепенно вытесняются ненавистными (мною) in-ear ухосуйками. А звук у них неожиданно хороший для такого класса наушников.

image

Значит, берём в руки инструмент, и поехали. Под катом фотографий на 800 кБ.
Читать дальше →
Total votes 167: ↑144 and ↓23 +121
Views 219K
Comments 120

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

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

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

Вступление



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

В этой статье мы разберем некоторые (пожалуй, наиболее востребованные) источники данных, напишем немного кода на Python и узнаем много нового.
Поехали
Total votes 30: ↑28 and ↓2 +26
Views 57K
Comments 11

Конференция Mobius: финальное расписание

JUG Ru Group corporate blog Development for iOS *Development for Android *
Всем привет!

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

Расписание кликабельно.



Итак, 14 марта, Питер. Приходите!
Total votes 17: ↑13 and ↓4 +9
Views 2.8K
Comments 7

Python на Хабре

Python *Programming *
Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
Читать дальше →
Total votes 182: ↑162 and ↓20 +142
Views 431K
Comments 65

Универсальный способ создания пакетов, для различных дистрибутивов GNU Linux

Ruby *
Tutorial
Различные дистрибутивы предоставляют свои утилиты, для сборки и установки программ.
Например в Debian/GNU Linux — это debuild и dpkg. В Red Hat Linux — rpmbuild и rpm.
Не редко нам приходится собирать пакеты самостоятельно.
Устанавливать программы через make, в обход системы управления пакетами в дистрибутивах — является дурным тоном.
В случаях, когда мы имеем исходный код, и автор программы позаботился о создании Makefile, можно использовать checkinstall.
Но бывает и так, что автор java приложения, не выкладывает ничего кроме jar файла. Или мы хотим на коленке создать какой-то пакет, и положить в репозиторий, что бы в дальнейшем устанавливать/обновлять его на множестве серверов с различными дистрибутивами. В этом нам поможет утилита под названием fpm.
В чем же ее достоинство? Она из коробки позволяет нам собирать пакеты под различные дистрибутивы и даже операционные системы.

Сейчас поддерживаются:
  • deb
  • rpm
  • solaris
  • tar
  • directories
  • Mac OS X .pkg files (osxpkg)

Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Views 15K
Comments 6

Приведение типов

Qt *
Будучи на конференции Qt Developer Days 2010 я узнал, что одним из самых популярных вопросов на собеседовании в разные зарубежные компании, работающие с Qt библиотекой, является вопрос о различиях в способах приведения типов в C++. Поэтому здесь я рассмотрю основные различия между static_cast, dynamic_cast, const_cast, reinterpret_cast, C-style cast, qobject_cast и qvariant_cast

Читать дальше →
Total votes 51: ↑48 and ↓3 +45
Views 173K
Comments 59

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity