Перепрошивка Nexus 7 3G (2012) на Android 7.1

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

Недавно мне попался в руки полумертвый планшет Nexus 7 2012 года выпуска. У него были проблемы с зарядкой, расходом батареи, а тормозил он так, что пользоваться им было решительно невозможно. На нем стояла стоковая прошивка, с которой он был на момент покупки, а именно Android 4.4. Сброс до заводских настроек и последующий апдейт до последней официальной сборки (5.1) только усугубили проблему: тормозить и разряжаться он стал только сильнее.

С горем пополам зарядив устройство, я решил разобраться сначала с софтом, а дальше думать что делать с батареей. После беглого изучения форумов было принято решение поставить обычный AOSP 7.1. Ниже приведу шаги, которые я прошёл, для настройки устройства. Если вы занимались прошивкой устройств на Android ранее, то скорее всего не найдёте для себя ничего нового, я же последний раз делал это в студенческие годы и чувствовал себя не очень уверенно, поэтому задокументировал основные шаги.

Читать далее →

Деплой по SSH при помощи Bitbucket Pipelines

Я долго игнорировал функционал Pipelines в Bitbucket: останавливали отсутствие вменяемой документации и некоторая видимая ограниченность. Однажды понадобилось реализовать для одного побочного проекта очень простой кейс: по каждому комиту пересобирать Docker-контейнер на удаленном хосте. Можно было бы конечно это сделать на скриптах, но я всегда был сторонником идеи, что такие простые проекты — это идеальная возможность пробовать что-то новое, поэтому дал шанс этому функционалу. Хотя это и оказалось очень просто, не все шаги были очевидны с самого начала, поэтому зафиксирую основные моменты.

Читать далее →

Wi-Fi реле Sonoff для умного дома и интернета вещей

Модули Sonoff разрабатываются компанией iTead, у них есть стандартный набор «умных» лампочек, выключателей и прочего, но особый интерес представляют недорогие WiFi-реле, выполненные на популярном чипе ESP8266. Управление осуществляется через закрытый протокол и приложение eWeLink, сервис облачный, управление можно осуществлять из любой точки мира, а не только из домашней сети. Отсюда и минус: при отключении интернета реле работать не будут.

Однако, я не зря упомянул название контроллера: под него существует множество альтернативных прошивок, и, при наличии минимальных навыков пайки (припаять гребёнку), можно довольно легко избежать вендор-лока. Если паять совсем лениво, то можно воспользоваться одной из библиотек от умельцев, которые разреверсили оригинальный протокол, например simple-sonoff-server, перенаправить через него устройство и контролировать своими методами. Сегодня я не буду останавливаться на таких хаках, а сделаю краткий обзор пары устройств со своим примером применения.

Читать далее →

Интеграция устройств Xiaomi с Domoticz и Apple Home

Работать с устройствами для умного дома от Xiaomi через официальное приложение Mi Home может быть не слишком удобно — не хватает гибкости настройки, расстраивает отсутствие интеграции с Apple Home, а ещё дополнительно напрягает необходимость в соединении с китайскими серверами для этих устройств. Помимо разумной паранойи (непонятно какие данные обо мне собираются и куда они уходят), есть ещё и более реальная проблема: когда РКН играл в кошки-мышки с Telegram, на несколько дней в диапазон блокировок IP попали и сервера Xiaomi, из-за чего устройства работали с перебоями, либо же не работали вовсе. В моем случае не получалось даже залогиниться в Mi Home.

Немного покопавшись в теме, в голове выстроилась следующая схема: берем Raspberry Pi (который несколько лет пылился без дела в ящике), ставим на него Homebridge, чтобы прокинуть устройства в HomeKit (и наконец-то властно крикнуть «Hey Siri!»), Domoticz в качестве центрального узла управления всеми умными устройствами. Наконец, соединяем Homebridge и Domoticz плагином homebridge-edomoticz.

Это довольно распространенная практика, и в сети можно найти большое количество руководств, посвященных этой связке. Если вам всё стало понятно после предыдущего абзаца, то дальше можно и не читать, а брать и делать, ничего сложного нет: всё сводится к установке нескольких пакетов, если нужны объяснения, ниже я постарался восстановить свои действия.

Читать далее →

Умный дом с Xiaomi Mi Home

Термин «умный дом» всегда вызывал у меня кривую ухмылку: включить светодиодную лампочку по Wi-Fi не кажется в 2018 году чем-то интеллектуальным. Давайте будем откровенны: чтобы включить лампочку по движению, хлопку, или даже команде сервера не потребуется даже Arduino: достаточно реле и копеечного датчика, а стоимость конструкции не превысит пары сотен рублей. Но оверинженеринг — не главная проблема производителей, никто из них не отвечает на главный вопрос: зачем? Все они предоставляют нам огромный набор инструментов: кнопки, выключатели, розетки, лампочки, светодиодные ленты, но ничего не говорят о сценариях использования. Практика показывает, что придумать что-то интереснее включения лампочек по какому-то триггеру большинству пользователей так и не удаётся.

В попытке отыскать собственный ответ на этот вопрос, я заказал несколько девайсов от Xiaomi (спойлер: ничего интересного я тоже не придумал). Главным критерием в выборе для меня была цена, так как изначально я не особенно верил в затею с умным домом, то и спускать много денег на неё не хотелось. Я не был знаком с экосистемой Mi Home и заказывал девайсы в хаотичном порядке, у разных продавцов, но в итоге это оказалось дольше и дороже, поэтому если вам тоже захочется познакомиться с этим миром, берите сразу готовый набор. Так или иначе, у меня на столе скопилась куча коробочек разной степени помятости, и настала пора думать, что можно сделать интересного со всем этим добром.

Читать далее →

Генерация скриншотов для AppStore при помощи Fastlane

Создавать руками скриншоты для AppStore может быть очень долгим и нудным занятием, особенно если у вас проекте присутствует локализация, поэтому имеет смысл автоматизировать это действие, тем более что Fastlane предоставляет очень удобный и гибкий способ сделать это.

Читать далее →

Macbook Pro 2017

Мой Mac mini служит верой и правдой уже 6 лет, за это время у меня не возникало особых претензий к его производительности, я лишь увеличил размер оперативной памяти до 8 Гб и поменял винчестер на SSD. Несмотря на маленькие размеры, мобильным его не назовешь: нужно таскать с собой монитор, мышку и клавиатуру, поэтому периодически я задумывался о покупке макбука. Окончательным решением в пользу замены компьютера стал анонс macOS Mojave, где было сказано, что отныне поддерживаются только модели начиная с mid-2012 (из-за необходимости наличия видеокарты, совместимой с технологией Metal).

Изначально я рассматривал к покупке модели 2015 года: привычные разъемы и отсутствие проблем с клавиатурой при сопоставимом по качеству железе (и яблочко светится!). На момент написания поста, было реально достать только 15-дюймовую модель, но и это оказалось не так просто: в нескольких магазинах столкнулся с одной и той же ситуацией: заказываешь на сайте (где он якобы в наличии), тебе перезванивает менеджер и говорит: «Мы такую модель больше не возим, хотите подберем аналогичную 2017 года?». Так как я всё равно хотел 13-дюймовую модель, то решил не заниматься ретроградством и приобрел конфигурацию без тачбара с i7 2,5 ГГц, 16 ГБ RAM и 128 ГБ SSD.

Читать далее →

Как найти путь к домашней директории симулятора iOS

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

Читать далее →

Скрываем и показываем иконку приложения в Dock на macOS

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

Читать далее →

Показываем индикатор загрузки файла в Finder

Ты наверное замечал, что при загрузке файлов, например в Chrome, в Finder рядом с файлом показывается некий круговой индикатор загрузки.

Отображение индикактора загрузки файла в Finder

Для этого используется специальный атрибут файла com.apple.progress.fractionCompleted, а также есть небольшая (но неочевидная) хитрость: нужно выставить дату создания файла равной 1984-01-24 08:00:00 +0000 а соотвественно, чтобы скрыть индикатор вернуть файлу актуальную дату и убрать атрибут.

Читать далее →