Недавно мне понадобилось реализовать небольшой аудио плеер. Я, по различным причинам, выбрал библиотеку Gstreamer. И вот решил поделиться полученными знаниями. Надеюсь, приведенная ниже информация кому-то будет полезна.
Алексей @ParaPilot
User
Как облегчить установку .apk на Android или GUI для adb install
3 min
27KДоброго времени суток, уважаемые Хабравчане! Так сложилось, что мне часто приходиться устанавливать .apk-файлы на Android-устройства — работаю тестировщиком. И вот в очередной раз, открывая терминал и набирая команду для установки очередного приложения, я задумался о том, как можно избавиться от рутинной работы. Статья предназначена для новичков, по-этому будет много пояснений.
+13
UEFI — Ааа, слышал… но все же, что это?
3 min
204KUEFI – взгляд вперед (часть 1/3)
Не так давно приходилось разбираться с тем, что такое UEFI и с чем же его едят. Тема весьма актуальна, а статей на русском языке не очень много. Что же, постараюсь исправить ситуацию и поделиться информацией, кою удалось «нарыть». Для начала, вводная глава для ознакомления с тем, что же такое UEFI и зачем оно нужно.
UEFI (Unified Extensible Firmware Interface) является связующей оболочкой между операционной системой и аппаратной частью (железом). В будущем планируется, что UEFI полностью вытеснит BIOS (Basic Input Output System) и займет его место. UEFI является относительно старой технологией, разработанной в 2005 (Unified EFI Forum) году. Однако, сие высказывание некорректно относительно данной ситуации, так как несмотря на то, что 8 лет довольно большой срок для IT-технологии и в иных сферах за эти годы успевали сменить сразу по нескольку технологий, UEFI изначально развивался довольно медленно и лишь в последние годы стал получать все большую известность. Ниже вы можете ознакомиться с графиком релизов UEFI.

Первоочередной целью при создании UEFI была разработка удобной и многогранной оболочки для 64-х битных систем с более развитым пользовательским интерфейсом и сетевым контролем.
И так, какими же преимуществами обладает UEFI?
+26
Знакомство с GStreamer: Устройства вывода
9 min
33KTutorial
И снова здравствуй, хабраюзер, которому интересен GStreamer! Сегодня мы поговорим про устройства вывода (sink) различных медиаданных, напишем примитивный плеер для прослушивания радио и записи потока в файл, и узнаем много нового.
Устройство вывода (sink) — это элемент для вывода сигнала куда-либо, будь то звуковая карта, файл, видеокарта или сетевой интерфейс. По своей сути, устройство вывода — это полная противоположность источника данных, и, в отличие от источников данных, устройства вывода имеют только один pad — sink.
Рассмотрим устройства вывода подробнее.
Устройство вывода (sink) — это элемент для вывода сигнала куда-либо, будь то звуковая карта, файл, видеокарта или сетевой интерфейс. По своей сути, устройство вывода — это полная противоположность источника данных, и, в отличие от источников данных, устройства вывода имеют только один pad — sink.
Рассмотрим устройства вывода подробнее.
+11
Минификация CSS и Javascript в Website проекте ASP.NET
4 min
12KTutorial
Про минимизацию javascript и css знают все. Ну если кто не знает, то, вкратце, это уменьшение объема файлов за счет удаления комментариев, разметки, переносов строк и прочего. Особенно актуально оно для интернет сайтов, которые при первом же визите пользователя должны порадовать его своей производительностью. Но наш проект, во-первых, работает в локальной сети, а во-вторых, используется на одних и тех же компьютерах изо дня в день, поэтому мы долгое время совсем не задумывались об оптимизации скриптов и стилей. Пока не стали плотно работать с ExtJS.
Созданная страничка со всеми подключенными скриптами и стилями весит больше 5 Мб (около 200 файлов). Одно только сгенерированное DOM-дерево в коде HTML содержит более 500 000 байт. Работать с системой пользователь может начать не раньше, чем через 5 секунд после загрузки страницы (инициализация скриптов, ExtJS и т.п.).
Как оказалось, несмотря на наличие локальной сети у заказчика и частую работу с одними и теми же страницами (должно же быть встроенное кэширование в браузере), иногда с загрузкой страниц возникают проблемы. Поэтому было решено уменьшить количество запросов к серверу и поработать над общей производительностью ExtJS в IE8.
Созданная страничка со всеми подключенными скриптами и стилями весит больше 5 Мб (около 200 файлов). Одно только сгенерированное DOM-дерево в коде HTML содержит более 500 000 байт. Работать с системой пользователь может начать не раньше, чем через 5 секунд после загрузки страницы (инициализация скриптов, ExtJS и т.п.).
Как оказалось, несмотря на наличие локальной сети у заказчика и частую работу с одними и теми же страницами (должно же быть встроенное кэширование в браузере), иногда с загрузкой страниц возникают проблемы. Поэтому было решено уменьшить количество запросов к серверу и поработать над общей производительностью ExtJS в IE8.
+4
Руководство SimpleMembership в ASP.NET MVC 4
6 min
44KTutorial
С появлением ASP.NET MVC 4 и WebMatrix команда mvc стремиться сделать вещи проще для разработчика. Исходя из отзывов одно из направлений для улучшения была выбрана безопасность asp.net.
ASP.NET MVC 4 шаблон проекта Internet добавил несколько новых очень полезных функций, которые построены с использованием SimpleMembership. SimpleMembership принес простую настройку ролей и пользователей, а также добавил поддержку OAuth. Однако новый провайдер не совместим с существующим ASP.NET Membership Provider.
В этом посте я расскажу о том, что такое SimpleMembership и как его использовать в проекте ASP.NET MVC 4.
ASP.NET MVC 4 шаблон проекта Internet добавил несколько новых очень полезных функций, которые построены с использованием SimpleMembership. SimpleMembership принес простую настройку ролей и пользователей, а также добавил поддержку OAuth. Однако новый провайдер не совместим с существующим ASP.NET Membership Provider.
В этом посте я расскажу о том, что такое SimpleMembership и как его использовать в проекте ASP.NET MVC 4.
+12
Очередной mp3-box из mpd и raspberry
5 min
37KЗахотелось мне собрать сетевой аудиоплеер. Не «медиа», а исключительно под музыку. Раньше этим занимался домашний сервер (foobar2000 + всякие удаленные управления для него), но наконец-то созрел вынести его поближе к точке входа сетевых проводов в квартиру, потому возникла вакансия. А десктоп или ноут для этого использовать накладно в плане потребления ресурсов. Я не требователен, музыка у меня играет просто для создания приятного фона, а не для эстетического наслаждения, потому каких-то высоких требований к аудиотракту у меня не было, лишь бы не шипел сильно.

ТЗ изначально выглядело так:
1) ethernet, в крайнем случае — wifi
2) поддержка самбы и всяких интернет-радио
3) поддержка любых форматов (минимально — mp3 и flac, можно ape)
4) аудио-разъем 3,5мм
5) удаленное управление с компьютера (составление плейлистов и т.п.), плюс желателен ПДУ (вполне хватит управления громкостью и переключения треков), вместо ПДУ устроит клиент для андроида
6) готовое устройство, а не конструктор

ТЗ изначально выглядело так:
1) ethernet, в крайнем случае — wifi
2) поддержка самбы и всяких интернет-радио
3) поддержка любых форматов (минимально — mp3 и flac, можно ape)
4) аудио-разъем 3,5мм
5) удаленное управление с компьютера (составление плейлистов и т.п.), плюс желателен ПДУ (вполне хватит управления громкостью и переключения треков), вместо ПДУ устроит клиент для андроида
6) готовое устройство, а не конструктор
+14
Почему Microsoft Internet Explorer 11 — худшее, что могло случиться с нами
5 min
405K
Я давеча написал комментарий о том, что компании Майкрософт давно пора перестать издеваться над веб-разработчиками и перейти на движок Gecko. Многие, видимо, посчитали это неуместной шуткой; тем не менее, это таки вовсе не шутка, а констатация факта. Те, кто с этим не согласен, видимо не пытались ещё разрабатывать под этот замечательный браузер.
Давайте я расскажу вам, какой это замечательный процесс.
+504
Беспроводной звук. Часть 1. Препарируем Bluetooth
20 min
318K
Такая история со мной приключилась в момент обзора с коллегой r3s потребительской беспроводной Bluetooth-акустики Klipsch KMC 3. Я столкнулся с ситуацией, когда «беспроводной» аудиопоток начинал безбожно прерываться, стоило лишь мне расположить источник звука у себя за спиной. Пищи для размышлений мне подкинула другая Bluetooth-аудиосистема, которая в тех же условиях вела себя куда лучше. Такая простая проблема выродилась в нырок с головой во внутренности протокола Bluetooth и детали передачи аудио с его помощью.
Под катом первой части цикла статей мы в легкой и непринужденной форме познакомимся с основными протоколами стека Bluetooth, покопаемся в дампе соединения источника и приемника звука, разберемся в причинах конфликта Bluetooth и Wi-Fi и обнаружим корень моей проблемы — прерывающегося звука.
+111
Запуск ChromeOS с USB-флешки
3 min
94KДобрый день уважаемые хабражители.
В сети достаточно материала описывающего каким образом можно посмотреть и оценить операционную систему от Корпорации добра на примере версии для разработчиков ChromiumOS. Все хорошо кроме одно но: Do NOT include Flash, Java or the Google Voice/Video plugin for licensing reasons. Выходит что посмотреть можно, а использовать без необходимости покупать Chromebook нет. В данной статье описан мой подход к решению задачи: Запуск ChromeOS (не путаем с ChromiumOS) с флешки на обычном железе.
Заинтересованных прошу под кат.
В сети достаточно материала описывающего каким образом можно посмотреть и оценить операционную систему от Корпорации добра на примере версии для разработчиков ChromiumOS. Все хорошо кроме одно но: Do NOT include Flash, Java or the Google Voice/Video plugin for licensing reasons. Выходит что посмотреть можно, а использовать без необходимости покупать Chromebook нет. В данной статье описан мой подход к решению задачи: Запуск ChromeOS (не путаем с ChromiumOS) с флешки на обычном железе.
Заинтересованных прошу под кат.
+16
Работаем с девелоперской версией CKEditor 4
5 min
13KЧастенько появляется соблазн сделать какие-то изменения в CKEditor: дописать туда свои плагины, сконфигурировать его под свои нужды. Благо все это позволяет сделать CKEditor малой кровью. Все это можно найти в документации по CKEditor 4. В данном посте хотел бы рассказать подробно о том, как работать с девелоперской версией CKEditor 4: получение из девелоперской версии релиз версии, сжатие скриптов, включение иконок кастомных плагинов в спрайт и прочее.
Хотел бы обратить ваше внимание на то, что первая часть статьи не привязана к конкретной технологии и может быть полезна любому заинтересованному в работе сборщика CKEditor.
Всех заинтересованных прошу под кат.
Хотел бы обратить ваше внимание на то, что первая часть статьи не привязана к конкретной технологии и может быть полезна любому заинтересованному в работе сборщика CKEditor.
Всех заинтересованных прошу под кат.
+3
Пара лайфхаков нашего интернет-магазина
5 min
99KКогда у вас есть интернет-магазин, российская сеть и производство, тяжело сохранять серьёзность. Для нас бизнес – это игра. Поэтому мы не боимся пробовать разные весёлые штуки. Про часть из них я сейчас расскажу. Ниже несколько историй, среди которых есть две полезных, которые могут немного увеличить ваши продажи.
Самое крутое – это когда магазин создаёт позитив, о котором хочется рассказать друзьям. Когда только-только вышла игра «Бригада», мы просто купили паяльников (по 64 рубля за штуку) и первой полусотне покупателей выдали по одному.
Происходило это так: аниматор в зале играет с покупателем в нашу пародийную игру про лихие девяностные, потом покупатель идёт с коробкой к кассе. После оплаты кассир достаёт паяльник и кладёт его в пакет к игре со словами: «Вам пригодится».

Первый покупатель с паяльником
Какой профит? Да никакого, просто классная история. Точнее, она задумывалась таковой, пока про эту тему не написало какое-то крупное сообщество про партизанскую рекламу в интернете – в этот день мы продали ещё несколько десятков коробок.
Бесплатный криптоанализатор
Самое крутое – это когда магазин создаёт позитив, о котором хочется рассказать друзьям. Когда только-только вышла игра «Бригада», мы просто купили паяльников (по 64 рубля за штуку) и первой полусотне покупателей выдали по одному.
Происходило это так: аниматор в зале играет с покупателем в нашу пародийную игру про лихие девяностные, потом покупатель идёт с коробкой к кассе. После оплаты кассир достаёт паяльник и кладёт его в пакет к игре со словами: «Вам пригодится».

Первый покупатель с паяльником
Какой профит? Да никакого, просто классная история. Точнее, она задумывалась таковой, пока про эту тему не написало какое-то крупное сообщество про партизанскую рекламу в интернете – в этот день мы продали ещё несколько десятков коробок.
+246
OAuth.io
1 min
17KДоброго времени суток и с прошедшим Днем народного единства! Хочу рассказать об одном хорошем проекте — .

OAuth.io — это API (JavaScript, PhoneGap, iOS, Android, Flex) и сервис, который значительно упрощает взаимодействие более чем с 80-ю oAuth провайдерами (Facebook, Twitter, VK, GitHub, Dropbox, и др). Сервис работает по модели freemium: до 5000 соединений в месяц сервис бесплатный, при большем количестве вас ждут вполне демократичные цены. Стоит также сказать, что проект полностью открытый и вы сможете сами запустить у себя серверную часть «OAuth IO Daemon» (GitHub).

OAuth.io — это API (JavaScript, PhoneGap, iOS, Android, Flex) и сервис, который значительно упрощает взаимодействие более чем с 80-ю oAuth провайдерами (Facebook, Twitter, VK, GitHub, Dropbox, и др). Сервис работает по модели freemium: до 5000 соединений в месяц сервис бесплатный, при большем количестве вас ждут вполне демократичные цены. Стоит также сказать, что проект полностью открытый и вы сможете сами запустить у себя серверную часть «OAuth IO Daemon» (GitHub).
+46
Покупаем Nexus 5 через Google Play
11 min
303KTutorial
Recovery Mode
После успешного релиза смартфона Nexus 4 компании LG и Google вновь объединили усилия и анонсировали первый смартфон на основе самой свежей версии ОС Android — Android™ 4.4, KitKat®. Получивший новые характеристики смартфон Nexus 5 является самой тонкой и быстрой моделью в линейке устройств Google Nexus на сегодняшний день.
Для жителей Соединенных Штатов Nexus 5 продается в 4 модификациях:

На данный момент аппарат можно заказать в США. Но, к сожалению, для жителей СНГ раздел Устройства недоступен в Play Маркет'е. Поэтому просто положить товар в корзину, ввести адрес и оплатить — не получится. Но не будем отчаиваться и попытаемся обойти этот запрет. В статье я постараюсь максимально подробно рассказать о процедуре покупки и различных тонкостях. Начнём!
Для жителей Соединенных Штатов Nexus 5 продается в 4 модификациях:
- Nexus 5 (16 ГБ, черный) — 349$
- Nexus 5 (32 ГБ, черный) — 399$
- Nexus 5 (16 ГБ, белый) — 349$
- Nexus 5 (32 ГБ, белый) — 399$

На данный момент аппарат можно заказать в США. Но, к сожалению, для жителей СНГ раздел Устройства недоступен в Play Маркет'е. Поэтому просто положить товар в корзину, ввести адрес и оплатить — не получится. Но не будем отчаиваться и попытаемся обойти этот запрет. В статье я постараюсь максимально подробно рассказать о процедуре покупки и различных тонкостях. Начнём!
+90
Библиотека X.Scaffolding
4 min
13K
Внимание! Обновил пакет в NuGet. Подробности в конце статьи.
С выходом Visual Studio 2013, ASP.NET MVC 5 и Entity Framework 6 возможности скаффолдинга встроенные в Visual Studio стали еще лучше. Однако до сих пор создавая новое веб-приложение приходится делать много действий, которые можно было бы автоматизировать.
Поэтому для себя и разработчиков с которыми я работаю был создан пакет X.Scaffolding позволяющий более продуктивно создавать веб-приложения. Именно на основе этого пакета у нас сейчас разрабатывается большинство новых веб-приложений для работы с данными.
Сегодня же я решил поделится этим проектом и с читателями Хабрахабра. Возможно кому-то он покажется интересным и поможет в его работе, а кто-то и сам захочет поучаствовать в его развитии.
+18
Пишем single-page web application framework в 60 строках кода
5 min
76KВ качестве предисловия
Веб-дизайнерский народ в последнее время распробовал single page web applications. Что оправдано во многих случаях.
Но явно ошибочно считать что single page web application не сделать без чего-то типа AngularJS, Ember и прочих Knockouts.
Во всяком случае если вам нужно сделать нечто простое типа To-do списка совершенно не обязательно тащить на клиент килобайты мега-фреймворка. На самом деле килобайты трафика это пол беды. Основная цена, скажем AngularJS, в том что он, как любой универсальный data binding механизм, создает значительную run-time нагрузку.
Эта статья про то как в 60 строках кода + jQuery/Zepto сделать простой app framework котрый можно расширять под свои нужды и без лишних сущностей в нагрузку.
Постановка задачи
Наш framework должен ...:
- … поддерживать routing, т.е. должна быть возможность сказать в деклартивной модели: «этот вот url hash должен быть показан в этом view».
- Должна быть возможность динамической загрузки разных view. Какие-то части нашего приложения могут быть либо тяжелы для начальной загрузки, либо не нужны, например, для незалогиненного пользователя.
- Должна быть возможность динамической загрузки скриптов. По причинам изложенным в п. 2
- Наше приложение будет поддерживать browsing history — кнопка «назад» в браузере должна показывать предыдущую страницу и т.д.
- Ну и все это должно быть компактным и расширяемым как того будет требовать логика нашего приложения.
Пример того что мы хотим получить
Приложение Bootstrap'нутый список контактов — содержит сам список, карточку — детали контакта и некую панель управления (dashboard). Что будет на той панели нам не важно — знаем что что-то будет и ладно.

+39
Runtime-генерирование .Net-кода для тех, кому некогда
8 min
35KИнфраструктура .Net содержит встроенные средства генерирования кода (On-the-Fly Code Generation). Это позволяет .Net-программе в момент своего исполнения самостоятельно (без участия программиста) скомпилировать текст, написанный на каком-либо языке программирования и исполнить получившийся код. Логично было бы ожидать, что для осуществления этих действий в стандартной .Net-библиотеке предусмотрен простейший метод соответствующего класса. Но к сожалению это не так. Microsoft, проделав огромный путь по встраиванию в среду .Net средств генерирования кода, не сделала самый последний шаг навстречу простейшим потребностям программистов. Значит, придётся сделать этот шаг самостоятельно.
Самое простое средство предлагаемое Microsoft для решения описанной задачи — это класс CSharpCodeProvider, который входит в стандартную библиотеку .Net. Использование этого класса — не очень сложная задача, но тем не менее было бы полезно иметь инструмент, превращающий использование сгенерированного на лету кода в задачу тривиальную.
Самое простое средство предлагаемое Microsoft для решения описанной задачи — это класс CSharpCodeProvider, который входит в стандартную библиотеку .Net. Использование этого класса — не очень сложная задача, но тем не менее было бы полезно иметь инструмент, превращающий использование сгенерированного на лету кода в задачу тривиальную.
+44
Аспектно-ориентированное программирование: изучи и сделай сам!
17 min
60KTranslation
Статья родилась из того, что мне потребовался удобный и простой механизм перехвата для некоторых задач, который легко реализуется техниками АОП. Существует довольно много перехватчиков (Casle.net, Spring.net, LinFu и т.д.), требующих внедрять динамические дочерние классы в IL-код во время исполнения и приводящих практически всегда к одним и тем же ограничениям, накладываемым на перехватываемые классы: не статические, не запечатанные, методы и свойства должны быть виртуальными и т.д…
Другие механизмы перехвата требовали изменения процесс сборки или покупки лицензии. Ни то ни другое я себе позволить не мог…
Другие механизмы перехвата требовали изменения процесс сборки или покупки лицензии. Ни то ни другое я себе позволить не мог…
+33
Производительность Ubuntu в играх практически сравнялась с Windows 8.1
1 min
97KДолго Linux не мог составить конкуренцию Windows на десктопах, и одной из причин этого была недостаточная производительность в играх и нехватка популярных игр под Linux. В последнее время ситуация начинает кардинально изменяться. Благодаря Steam многие из самых лучших игр стали доступны под Linux, и отставание Linux-драйверов современных видеокарт от Windows тоже уходит в историю.

Большое тестирование 13-ти различных видеокарт AMD Radeon и NVIDIA GeForce и сравнение производительности видеоигр под Ubuntu Linux и Windows 8.1 показывает очень близкий результат практически по всем тестам, а некоторые GPU даже быстрее работают именно под Ubuntu!

Большое тестирование 13-ти различных видеокарт AMD Radeon и NVIDIA GeForce и сравнение производительности видеоигр под Ubuntu Linux и Windows 8.1 показывает очень близкий результат практически по всем тестам, а некоторые GPU даже быстрее работают именно под Ubuntu!
+60
HTML-минимизация в Web Essentials 2013
5 min
11K
Одним из наиболее существенных нововведений для веб-разработчиков в Visual Studio 2013 стал новый HTML-редактор. В отличие от старого редактора, который представлял из себя смесь из управляемого и неуправляемого кода (и даже использовал некоторые компоненты FrontPage), новый редактор был полностью переписан на управляемом коде (в качестве основы использовался HTML-редактор из WebMatrix).
Стоит отметить, что для ASP.NET Web Forms (файлы с расширениями.aspx
,.ascx
и.master
) по-прежнему используется старый редактор.
Помимо улучшенных средств для работы с HTML-кодом, в новом редакторе также реализована поддержка синтаксиса представлений KnockoutJS, AngularJS и Handlebars, и IntelliSense для специальных префиксов и META-тегов (Facebook, Twitter, Open Graph, Windows Phone, iOS и др.).
К сожалению, не каждая новинка из мира веб-разработки может попасть в Visual Studio в силу следующих причин:
- Многие современные веб-технологии и библиотеки являются Open Source-проектами (например, компиляторы LESS и CoffeeScript, верификатор JSHint и т.д.), и некоторые из этих проектов имеют лицензии, которые не позволяют включать их в состав коммерческих продуктов.
- Сейчас веб-технологии развиваются настолько быстро, что их поддержка средствами разработки может стать неактуальной в течение одной недели. Поэтому ни частые релизы Visual Studio (сейчас период между релизами сократился с двух лет до одного года), ни периодические обновления не позволяют поддерживать Visual Studio в полностью актуальном состоянии.
Для того, чтобы решить перечисленные выше проблемы сотрудником компании Microsoft Мэдсом Кристенсеном было создано VS-расширение Web Essentials. Исходный код Web Essentials опубликован на GitHub (доступны 2 версии: 2012 и 2013).
Ниже перечислены дополнительные возможности HTML-редактора из Visual Studio 2013, которые становятся доступными после установки Web Essentials 2013:
- Поддержка Zen Coding (более подробную информацию об использовании Zen Coding в Web Essentials можно прочитать в статье Джона Папа «Zen Coding in Visual Studio 2012») и генератор текста-«рыбы» Lorem Ipsum (например, если ввести
lorem10
и нажать клавишу TAB, то в код будут вставлены 10 слов из трактата Цицерона «О пределах добра и зла»). - Команда Go To Definition для тегов
<a>
,<style>
и<script>
. - HTML-минимизация выделенного фрагмента кода.
- Поддержка HTML-регионов (например,
<!--#region main--> Какой-то код… <!--#endregion-->
).
Поскольку HTML-минимизация в Web Essentials 2013 была реализована средствами библиотеки WebMarkupMin, автором которой я являюсь, то в этой статье мы рассмотрим данную возможность более подробно.
+7
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity