Как стать автором
Обновить
60
0
Иван Подогов @ginkage

Инженер

Отправить сообщение

Пишем прошивку под TI cc2530 на Z-Stack 3.0 для Zigbee реле Sonoff BASICZBR3 с датчиком ds18b20

Время на прочтение22 мин
Количество просмотров53K


Предполагается, что читатель уже имеет начальные знания языка C, что-то знает о Zigbee, чипе cc2530, методах его прошивания и использования, а также знаком с такими проектами, как zigbee2mqtt. Если нет — подготовьтесь или сходите почитать на https://myzigbee.ru и https://www.zigbee2mqtt.io/
Статья написана сперва подробно, но постепенно ускоряется и уже не останавливается на деталях, а описывает готовый код прошивки. Если кому-то не интересны рассуждения, то просто открывайте исходники прошивки и читайте их.

Исходный код готовой прошивки

Код и подход к разработке не претендует на идеальность. “Я не волшебник, я только учусь.”

Цель


Основная цель — разобраться, как писать прошивки под Z-Stack, давно хотел. Поэтому решил реализовать альтернативную прошивку под готовое оборудование (в качестве примера выбрано реле Sonoff BASICZBR3) и добавить возможность подключения популярного датчика температуры ds18b20.

Дополнительно хотел показать начинающим Zigbee-разработчикам пример разработки прошивки под чип TI cc2530 на Z-Stack.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии21

AV-ресивер Denon AVR-X2400H: отвечая требованиям времени или больше чем HI-FI

Время на прочтение5 мин
Количество просмотров18K
Я стараюсь избегать в этом блоге откровенно рекламных публикаций. Но в ряде случаев я сталкиваюсь с устройствами, о которых действительно хочется написать. Сравнительно недавно у меня появилась необходимость купить AV-ресивер: попросил брат, который предпочитает смотреть кино дома, страдает лёгкой формой аудиофилии и поэтому достаточно критично относится к технике.



Сам я никогда не был горячим поклонником кинотеатров для дома (предпочитаю посещать общественные), а с AV-ресиверами сталкивался исключительно по причине работы в Pult, поэтому задача оказалась сравнительно непростой. Бюджет покупки был ограничен 50 000 рублей, что также осложняло выбор.

После двухнедельного вгрызания в даташиты и консультаций с нашими спецами по AV, я остановил свой выбор на Denon AVR-X2400H. Устройство впечатлило меня настолько, что я решил сделать небольшой обзор. Постараюсь выразить восторг без пафоса, лишнего субъективизма и приторной «джинсовости». Если вам интересно, что именно меня так впечатлило — добро пожаловать под кат!
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии48

Shake Detector для Android на RxJava

Время на прочтение9 мин
Количество просмотров16K


Вступление


Началось все с того, что была поставлена задача отменять последнее действие в приложении при встряхивании устройства. Но как понять, что случилось это самое встряхивание? Через пару минут изучения вопроса стало ясно, что надо подписываться на события от акселерометра и дальше пытаться как-то определить, что устройство встряхнули.
Обнаружились и готовые решения. Все они были довольно похожи, но в чистом виде они меня не устраивали, и я написал собственный «велосипед». Это был класс, который подписывался на события от сенсора и менял свое состояние по мере их поступления. Потом пару раз я и мои коллеги подкручивали шестеренки этого велосипеда, и в результате он стал напоминать нечто из «Безумного Макса». Я пообещал, что, как выдастся свободное время, приведу это безобразие в порядок.

И вот, читая недавно статьи по RxJava, я вспомнил про эту задачу. «Хм, — подумал я, — RxJava выглядит очень подходящим инструментом для такого рода проблем». Не откладывая в долгий ящик, взял и написал решение на RxJava. Результат меня поразил: вся логика заняла 8 (восемь!) строк! Я решил поделиться своим опытом с другим разработчикам. Так появилась на свет эта статья.

Надеюсь, этот простой пример поможет принять решение тем, кто размышляет о применении RxJava в своих проектах.

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

Приступим!
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии11

Побеждаем Android Camera2 API с помощью RxJava2 (часть 1)

Время на прочтение21 мин
Количество просмотров37K


Как известно, RxJava идеально подходит для решения двух задач: обработки потоков событий и работы с асинхронными методами. В одном из предыдущих постов я показал, как можно построить цепочку операторов, обрабатывающую поток событий от сенсора. А сегодня я хочу продемонстрировать, как RxJava применяется для работы с существенно асинхронным API. В качестве такого API я выбрал Camera2 API.


Ниже будет показан пример использования Camera2 API, который пока довольно слабо задокументирован и изучен сообществом. Для его укрощения будет использована RxJava2. Вторая версия этой популярной библиотеки вышла сравнительно недавно, и примеров на ней тоже немного.


Для кого этот пост? Я рассчитываю, что читатель – умудрённый опытом, но всё ещё любознательный Android-разработчик. Очень желательны базовые знания о реактивном программировании (хорошее введение – здесь) и понимание Marble Diagrams. Пост будет полезен тем, кто хочет проникнуться реактивным подходом, а также тем, кто хочет использовать Camera2 API в своих проектах. Предупреждаю, будет много кода!


Исходники проекта можно найти на GitHub.

Читать дальше →
Всего голосов 59: ↑59 и ↓0+59
Комментарии9

Оболочку рабочего стола Ubuntu Unity запустили в среде Windows 10

Время на прочтение3 мин
Количество просмотров95K
Сделать это несложно, просмотрите короткую инструкцию и попробуйте сделать то же самое




Компания Canonical, отвечающая за разработку Ubuntu и корпорация Microsoft в начале этого года объявили о включении bash и основного инструментария Ubuntu в Windows 10. Знакомство с новыми возможностями Windows 10 с элементами Ubuntu можно было начать еще в апреле, начиная с обновления 14316. В этом обновлении к Windows 10 добавили WSL-прослойку, которая транслирует системные вызовы Linux в системные вызовы Windows. В результате в среде Windows стало возможным развернуть полноценный инструментарий Ubuntu Linux без эмуляции и виртуализации. Окончательная интеграция будет выполнена с выходом Anniversary Update в августе.

В апреле этого года специалисты научились запускать и десктопные приложения Ubuntu с графическим интерфейсом в среде Windows 10. Пользователь Reddit с ником w2qw нашел способ установить VIM и Firefox. Сейчас пользователь Github с ником Guerra24 смог запустить в среде Windows оболочку рабочего стола Ubunu Unity.
Читать дальше →
Всего голосов 54: ↑43 и ↓11+32
Комментарии85

Открытые данные показали массовые злоупотребления со штрафами за парковку

Время на прочтение3 мин
Количество просмотров31K
Оказывается, американская полиция тоже выписывает необоснованные штрафы за неправильную парковку. Правда, они берут деньги не себе в карман, а в городскую казну, и не из корысти, а от незнания правил дорожного движения. Но гражданам от этого не легче.

Автовладелец и программист Бен Веллингтон (Бен Веллингтон) провёл собственное расследование и обнаружил огромные масштабы нарушений. В расследовании ему помог государственный портал открытых данных NYC Open Data и опыт программирования на Python.

Дело в том, что в Нью-Йорке действует сложная система специфических норм и правил в отношении парковки. Неудивительно, что многие люди не разбираются в них досконально. Например, мало кто знает, что с декабря 2008 года в городе разрешили парковаться на главной дороге у тротуара возле T-перекрёстков и съездов с тротуара, как показано на схеме вверху, даже возле съездов с заниженным боррдюром. Это сделано, чтобы увеличить количество парковочных мест на улицах.

Изменение официально внесли в ПДД Нью-Йорка, но о нём почти никто не знает. Бен Веллингтон сам недавно узнал о таком правиле — и сразу нашёл свободное место в Бруклине возле своего дома. Вскоре он обнаружил квитанцию о штрафе за неправильную парковку.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии51

Судный день: К чему приводят скрытые ошибки асинхронной обработки данных при росте нагрузки

Время на прочтение9 мин
Количество просмотров24K


В нашем блоге мы рассказываем не только о развитии своего продукта — биллинга для операторов связи «Гидра», но и описываем сложности и проблемы, с которыми сталкиваемся на этом пути. Ранее мы уже описывали ситуацию, в которой бесконтрольный рост таблиц в базе данных одной компании-пользователя нашей системы привел к настоящему DoS.

Сегодня речь пойдет о еще одном интересном случае внезапного сбоя, который сделал «день смеха» 1 апреля этого года совсем не смешным для службы поддержки «Латеры».
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии63

Vulkan API (glNext) от Khronos Group

Время на прочтение10 мин
Количество просмотров55K
Относительно недавно вышел новый Vulkan API — можно сказать, наследник OpenGL, хотя основан Vulkan на API Mantle от AMD.
Конечно, развитие и поддержка OpenGL не прекратилось, а также в свет вышел и DirectX 12. Что там с DirectX 12 и почему его поставили только на Windows 10 — я, к сожалению (а может и к счастью) не знаю. Но вот кроссплатформенный Vulkan меня заинтересовал. В чём же особенности Vulkan и как правильно его использовать я постараюсь рассказать вам в этой статье.

Vulkan Logo


Итак, для чего нужен Vulkan и где он может быть использован? В играх и приложениях, работающие с графикой? Конечно! Вычислять, как это делает CUDA или OpenCL? Без проблем. Обязательно ли для этого нам нужно окно или дисплей? Конечно нет, вы можете сами указать, куда транслировать ваш результат или не транслировать его вообще. Но обо всём по порядку.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии33

Спросите Итана №46: Что такое квантовое наблюдение

Время на прочтение4 мин
Количество просмотров39K
Можно увидеть многое, просто наблюдая
— Йоги Бера


Читатель спрашивает:
А что такое «наблюдение»? У меня есть два примера, которые я тем меньше понимаю, чем больше о них думаю: эксперимент Юнга и теорема Белла. Чем больше я о них думаю, тем меньше я понимаю, что на самом деле означает «наблюдение».


Давайте начнём с рассмотрения этих двух классических примеров странности квантового мира.

image

Сначала возьмём эксперимент Юнга. Давно известно, что частицы ведут себя не так, как волны. Если вы возьмёте экран с двумя щелями и будете кидать туда камушки, или пульки, или другие макроскопические предметы, большинство камушков будет задержано экраном. Несколько пролетят через щели. Можно ожидать, и по сути, так и происходит, что несколько камушков пролетят через левую щель, и несколько – через правую.
Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии113

Как взломать Telegram и WhatsApp: спецслужбы не нужны

Время на прочтение2 мин
Количество просмотров716K
На прошлой неделе общественность взбудоражила новость о возможной причастности спецслужб к взлому аккаунтов оппозиционеров в популярном мессенджере Telegram. На протяжении своего существования человечество пыталось объяснить всё необъяснимое с помощью высших сил – Богов. В наше время все непонятные вещи объясняют происками спецслужб.

Мы решили проверить, действительно ли нужно быть спецслужбой, чтобы получить доступ к чужому аккаунту Telegram. Для этого мы зарегистрировали тестовый аккаунт Telegram, обменялись несколькими тестовыми сообщениями:



А затем мы провели атаку через сеть SS7 на один из тестовых номеров (подробнее о самих атаках мы писали ранее). И вот что у нас получилось:
Читать дальше →
Всего голосов 156: ↑146 и ↓10+136
Комментарии242

Кюветы Android, Часть 1: SDK

Время на прочтение12 мин
Количество просмотров27K
Довольно долгое время я никак не мог понять, в чём же разница между «библиотекой» и «фреймворком». Нет-нет, я умел и читать, и гуглить, но до меня всё никак не доходил смысл этих понятий. Начав же программировать под андроид, я наконец понял, что значат слова «библиотеку использует программист, но программиста использует фреймворк».
В этой серии статьей я хочу рассказать о проблемах, с которыми мне пришлось столнулся при разработке под андроид. Моей целью является не предоставление каких-либо убер-решений приведенных проблем, а лишь информирование о том, с какими проблемами может столкнуться тот, кто посягнет на святой грааль Android SDK. Не думаю, что суровые синьоры откроют для себя Америку, но как говорится: «повторение — мать учения».
image
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии21

Кюветы Android, Часть 2: SDK и Libraries

Время на прочтение10 мин
Количество просмотров22K
Разрабатывая под Android, всегда нужно быть начеку. Шаг влево / шаг вправо — и вот прошел ещё один час за дебагом. Кюветы могут быть какие угодно: начиная от обычных багов в SDK и заканчивая неочевидными именами методов с контекстно зависимым результатом (да-да, Fragment.getFragmentManager(), это я о тебе).

В предыдущей статье были описаны кюветы «на поверхности» SDK, в которые угодить очень легко. На этот же раз кюветы будут поглубже, помудрёнее и поспецифичнее. Также будет несколько моментов, связанных с Retrofit 2 & Gson.
image
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии23

Кюветы Android, Часть 3: SDK и RxJava (Финал)

Время на прочтение18 мин
Количество просмотров20K
Android SDK и «внезапности» — почти близнецы. Вы можете наизусть знать development.android.com, но при этом продолжать рвать на себе волосы при попытке сделать что-то покруче, чем форма-кнопка-прогрессбар.
Это заключительная, третья, часть из серии статей о Кюветах Android'а. На деле конечно их должно было быть десятка два, но я слишком скромный. На этот раз я наконец дорасказываю о неприятностях в SDK, с которыми мне довелось столкнуться, а так же затрону популярную нынче технологию ReactiveX.
В общем, Android SDK, RxJava, Кюветы — поехали!
image
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии17

Lazy threads: опциональный параллелизм

Время на прочтение3 мин
Количество просмотров8.9K
Статья-гипотеза. Описанное нигде не было реализовано, хотя, в принципе, ничто не мешает запилить такое в Фантоме.

Эта идея пришла мне в голову очень давно и даже где-то была мной описана. Триггер к тому, чтобы её описать сегодня — обсуждение сетевых драйверов Линукса в комментариях к Анатомии драйвера.

Сформулирую проблему, описанную там, как я её понимаю: сетевой драйвер Линукса работает в отдельной нити, которая читает принятые пакеты из устройства и синхронно их обрабатывает. Прогоняет через роутинг, файрволл и, если пакет не нам, отправляет его в исходящий интерфейс.

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

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

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

Как это.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии48

Шрифт Яндекса — Yandex Sans

Время на прочтение10 мин
Количество просмотров118K
image

23 апреля 2016 на Я.Субботнике для дизайнеров мы анонсировали наш собственный шрифт Yandex Sans. Мы работали над ним два с половиной года и очень счастливы наконец поделиться результатом. В этом посте я расскажу о том, зачем мы всё это задумали, как происходила работа, что получилось в результате и что будет дальше. Пост написан по мотивам нашего рассказа на Субботнике.
Читать дальше →
Всего голосов 83: ↑65 и ↓18+47
Комментарии66

Чем GearVR отличается от картонной коробки, или погоня за latency

Время на прочтение13 мин
Количество просмотров18K

Disclaimer: пост написан на основе изрядно отредактированных логов чата closedcircles.com, отсюда и стиль изложения, и наличие уточняющих вопросов.


image


Главный термин который надо знать относительно VR — motion-to-photon latency.
Иначе говоря, задержка между поворотом головы и последним фотоном изображения (отрисованного с ракурса нового положения головы) покинувшим экран.
Эмпирически выведено что motion-to-photon latency 20 msec и ниже позволяет достигать presence — т.е. ощущения что двигаешь головой в виртуальном мире.
Важны ли значения меньше 20 ms или нет — непонятно, но в общем цель — достигнуть 20.
GearVR правдами и неправдами достигает, и я расскажу как.

Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии14

После пяти суток компиляции Gentoo Linux установилась на автомобиль Tesla Model S

Время на прочтение2 мин
Количество просмотров41K


Пару месяцев назад владелец автомобиля Tesla Model S, линуксоид и фанат операционной системы Gentoo под ником Hemera решила всё-таки хакнуть свою машину Tesla Model S и получить права рута.

Первым делом она расковыряла боковую панель возле двери с водительской стороны и извлекла оттуда кабель CAT 6 с проприетарным коннектором, который использует компания Tesla. К нему можно подключиться обычным сетевым кабелем, сделав переходник по образцу проприетарного, но сеть защищена паролем.
Читать дальше →
Всего голосов 46: ↑39 и ↓7+32
Комментарии67

Создание сверхдлинных плоских панорамных изображений из видео

Время на прочтение6 мин
Количество просмотров34K


Предыстория


Пару лет назад на Хабре была статья, посвящённая Адаму Мадьяру Камера Эйнштейна: как один фотограф изображает время. Мне она показалась очень интересной, но, если честно, то я так и не понял технологию для съёмки видео Stainless. Особенно меня восхитили его фотографии поезда метро. После чего я задался мыслью: а могу ли я сам создать нечто подобное?
Читать дальше →
Всего голосов 66: ↑63 и ↓3+60
Комментарии69

Восьмибитные анекдоты 2

Время на прочтение5 мин
Количество просмотров48K
Судя по комментариям, первая часть читателям понравилась ( geektimes.ru/post/274220). Решил, по поводу пятницы, продолжить. Кстати, на рисунке К580ИК80 вначале выпускались в планарном 48-ми выводном керамическом корпусе. Такой и стоял в нашем первом «Микро-80».


Читать дальше →
Всего голосов 74: ↑70 и ↓4+66
Комментарии175

«Пятничный формат»: Подборка легендарных песен современности

Время на прочтение4 мин
Количество просмотров19K

Фото Libert Schmidt CC-BY

Пользователи сервиса Quora поделились своим мнением по данному вопросу, а мы узнали, что слушают сотрудники Аудиомании.
Читать дальше →
Всего голосов 22: ↑16 и ↓6+10
Комментарии51

Информация

В рейтинге
4 272-й
Откуда
London, England - London, Великобритания
Дата рождения
Зарегистрирован
Активность