четверг, 1 сентября 2016 г.

Карта запрещенных мест для полета на квадрокоптере. Беларусь.

Набросал карту по мотивам недавно вышедшего (22 августа 2016) постановления министерства обороны о запрете использования квадрокоптеров в определенных зонах Беларуси.

Буковкой X обозначены позиции под номером 10 в таблице постановления - для них не задан радиус. Наверное ограничена вся область. Так что над аквапарком Лебяжий и над Дроздами полеты теперь официально запрещены.


понедельник, 18 января 2016 г.

Live трансляции и Windows Phone

Так повелось, что под платформу Windows Phone отсутствует множество популярных приложений. Среди них критически популярные: VSCO, Periscope, Snapchat. Microsoft вбахивает кучи денег, чтобы перенести самые крутые приложения, но находятся ребята вроде Snapchat, которые так ненавидят Microsoft, что судятся с разработчиками сумевшими разобрать snapchat приложения на api и сделать приложение под WP. Копии под iOS и Android адвокаты успешно игнорируют.

Но сегодня я расскажу о том, как обстоят дела с live видео трансляциями с телефона под Windows. Сейчас начало 2016-го, и нет ни одного приложения, позволяющего делать live видео трансляции с вашего windows телефона, как это делают миллионы школьников с помощью Periscope под другие мобильные платформы.

Неделю я гуглил и вникал в эту тему и мне импонирует следующий подход: стримить с телефона на сервер, там конвертировать во все возможные форматы и транлировать на любые устройства. Альтернативный способ - писать voip p2p клиенты, как это делает Skype для онлайн конференций.


Эта картинка взята с https://wmspanel.com/nimble. Nimble просто шикарный стример - принимает ваш поток и раздает в любом популярном формате. Я провел небольшой тест: установил Nimble, запустил стримминг изображения вебкамеры с помощью Adobe Media Encoder и сразу поднял простенькую html страницу с видео фреймом из Nimble. Задержка таким способом у меня получилась ~16 секунд.

Как сделать live стримминг с Windows Phone? Вот такие инструменты хотел использовать я:

RTMP (ffmpeg на телефоне) -> WebORB For .Net (Server) -> Nimble (optional) -> любые клиенты

RTMP - старенький простой стримминг протокол. Его поддерживает очень известная видео библиотека ffmpeg. Microsoft сделала отличный пример-обертку FFmpegInterop, но только под клиентскую часть. Т.е. в этом примере можно только принимать стрим на телефон/десктоп (поддерживается UWP под Windows 10). Чтобы сделать трансляцию с телефона, всего-то нужно дописать эту C++ обертку, добавить к вызову ffmpeg опции конвертации видеопотока и отправкой на сервер вместо приема.

WebOrb - единственный найденный мной .net фреймворк, способный работать с rtmp форматом. Дальше поток можно сразу подключаться к потоку rtmp понимающими плеерами или отдать потом на Nimble, чтобы любое устройство смогло подключиться

Аналоги для серверной части - ffmpegServer, nginx (с rtmp модулем), wowza server, nimble.

Когда-то у microsoft существовал silverlight компонент (поддерживался и на WP), способный транслировать видео в IIS Smooth Streaming формате. Эту штуку использовали на Олимпийских играх, чтобы обеспечивать видео трансляцию с минимальной задержкой. Но увы, silverlight умер и унес с собой эту технологию.

Вывод:
Нужно доковырять FFmpegInterop пакет и наконец подарить пользователям WP возможность показать себя красивых всему миру в реальном времени. Если кто-то сделает, дайте знать ;)

пятница, 4 декабря 2015 г.

Список базовых Nuget пакетов при разработке веб-сервисов на платформе .NET

Абсолютное большинство новых веб- и мобильных приложений строятся на базе REST API. А все потому, что это самый простой способ поддерживать множество клиентов, реализованных на любых технологиях. В этой записи я решил привести список базовых пакетов, необходимых в Enterprise разработке сервисов (да и других типов .NET приложений, чего уж там).
  • AutoMapper
  • Json.Net от Newtonsoft
  • Azure Storage Extensions (Client library)
  • LightInject / Castle Windsor / NInject
    • LightInject.WebApi
    • Lightinject.ServiceLocator
  • CommonLocator
  • RestSharp
  • Swasgbuckle - Swagger for WebApi

понедельник, 31 августа 2015 г.

У Lumia 925 проблемы с флешь памятью eMMC

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

И тут моя люмия вырубается и не может загрузится. Soft reset (громкость вниз + выкл.) - не работает. Hard reset (громкость вниз + выкл. + камера) запускается, все падает и телефон вконец окирпичивается.

Я пробовал восстановить его с помощью windows phone recovery tool, пробовал прошить через консольный режим. Ничего не работает. Телефон мертвый на столько, что не подает признаков жизни при подключении к зарядному устройству и не определяется компьютером. На всякий случай я зарядил батарею вручную и продолжил поиски информации.

Заряжать батарею гораздо проще, чем аккуратно снять заднюю крышку телефона.
Перепрошиваются windows телефоны очень здорово через Advance Turbo Flasher - чудесная программа, защищенная хардварным ключом стоимостью порядка $100. Прикинул, что окупится мне такая штука не скоро и просто нашел человека на Ждановичах, который этим на хлеб зарабатывает. Мы вместе попробовали прошить и выяснили, что полетела eMMC память.

После обзвона пары ремонтников, выяснилось, что многие занимаются перепайкой флешь памяти, но на Lumia 925 ни у кого это сделать успешно не удалось. Говорят меняйте системную плату целиком.

Ок, мне повезло недорого выкпить такую же модель, но с треснутым экраном и дикими потертостями.

Две Lumia 925 в частичном разборе
Пока собирал свой телефон, умудрился порвать коаксикальный кабель. Но теперь у меня есть запасной :)

Б.у. телефон обошелся мне в 950 тыс. бел. рублей ($53 на момент покупки). Это выгоднее, чем заказывать новую системную плату с aliexpress (примерно $60 + 2 месяца ожидания + риски), и еще остаются запасные части.

вторник, 21 апреля 2015 г.

Как сделать из ISO загрузочную флешку в OSX через терминал

Mac OS X позволяет легко сделать загрузочную флешку для Windows 7+ с помощью стандартной утилиты Bootcamp Assistant.

К сожалению, bootcamp ассистент не монтирует загрузочные образы систем, с которыми он не знаком. Как всегда, наш лучший помошник - терминал!


Всего три команды:
  1. hdiutil convert -format UDRW -o ~/path/to/my_iso.img ~/path/from/my_iso.iso
  2. diskutil unmountDisk /dev/disk3
  3. sudo dd if=my_iso.img of=/dev/rdisk3 bs=1024
По-человечески это значит:
  1. Сконвертировать iso в img формат (по умолчанию hdiutil добавит постфикс .dmg, который следует удалить).
  2. Размонтировать диск(флешку), на который будет записываться образ (подставить номер своего диска можно посмотреть с помощью diskutil list).
  3. Записать образ на флешку.
Заливается долго, текущий статус можно просмотреть в терминале с помощью ctrl+t.


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

воскресенье, 5 апреля 2015 г.

Замена дисплейного модуля Nexus 4. Часть 3

В предыдущих сериях:
Замена стекла на LG Nexus 4. Часть 1
Замена дисплея LG Nexus 4. Часть 2

Итак, я запорол родной дисплей. Поэтому, заказал новый дисплейны модуль из Китая и, буквально через пару, недель забрал его с почты.

Надо сказать, что за время, пока телефон лежал без дела он разрядился на столько, что когда я подключил для проверки новый дисплей и зарядное устройство, Nexus замигал красной лампочкой и отказался загружаться. Много мыслей пролетело в моей голове. И про китайцев, подсунувших непонятно какой дисплей и про собственные руки, которые могли запросто замкнуть память, аккумулятор или что-нибудь ещё. Провозился битый час и все-таки запустил!

Да, дисплей нормальный, чувствительность обычная, датчик приближения при звонках работает. Цветопередачу сравнить не могу, но выглядит все ОК. Обновил до Lollipop и стало совсем хорошо :)


На дисплее пока приклеена пленка, приклеена китайцами, как попало и с пузырями. Но под ней дисплей просто красавец.


Вывод такой. Если вы извращенец и верите в собственные силы, отклеивайте стекло и приклеивайте новое. Это сложно, но можно сделать. Проще заказать готовый модуль. И пусть вам повезет с ним так же как и мне.


Замена дисплея LG Nexus 4. Часть 2

В предыдущих сериях: Замена стекла на LG Nexus 4. Часть 1

В предыдущей статье я писал, что на Nexus 4 можно заменить только стекло или дисплейный модуль целиком и выбрал путь посложнее. Попробовал. И теперь у меня есть что вам рассказать.

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


На Aliexpress за пару баксов можно найти все нужные отвертки для разбора смартфонов вроде Nexus или iPhone. Сделаны они как попало, но свои функции выполняют. Разбираем телефон и получаем вот такую картину.


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

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

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


Итак, на половине процедуры всё пошло крахом. В случае успеха дальше нужно снимать растворителем силикон, приклеивать оптическим клеем тач панель и закреплять это дело ультрафиолетовым светом.

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