Как хостить статику на Firebase

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

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

Внешний SSD Transcend ESD240C

Самая большая ошибка, которую можно совершить приобретая девайсы Apple — предположить, что минимального объема хранилища будет достаточно. Мне тоже не удалось избежать этого заблуждения, когда приобретал свой Макбук. Я использую ноутбук только для разработки и там нет ничего кроме Xcode и исходного кода проектов, но даже при таких скромных запросах, 128 ГБ встроенной памяти заканчиваются с пугающей быстротой. Постоянно приходится что-то удалять и чистить. Так как я не планирую в ближайшее время обновлять своё железо, то проблему нехватки места можно решить только покупкой внешнего накопителя.

Мне нужен компактный и лёгкий накопитель, чтобы брать его с собой в поездки. У него должна быть достаточно высокая скорость записи, так как я планировал перенести на него некоторый софт, часть исходников и другие файлы по проектам. После недолгих поисков, я остановил свой выбор на внешнем SSD Transcend ESD240C, объёмом в 240 ГБ.

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

FSEvents: Разбираемся с мониториногом событий файловой системы в macOS

FSEvents

File System Events (далее FSEvents) - механизм, доступный в macOS начиная с версии 10.5, который позволяет подписываться на уведомления об изменениях в структуре папок, а также их содержимого. Он используется многими системными утилитами, например Time Machine. Стоит отметить, что мониторинг происходит на уровне директории: иными словами придет уведомление, что в директории изменился некий файл, но конкретной информации об изменениях в нём содержаться не будет. Для более детального мониторинга придётся спускаться на уровень ниже и использовать kqueues, либо писать собственный kext. Поэтому для написания собственного антивируса такой механизм не подойдет, а вот для своего аналога Dropbox, или чего-то подобного - вполне.

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

Введение в RxSwift. Часть 4. Операторы

Логотип проекта ReactiveX

Операторы позволяют удобно преобразовывать последовательность приходящих событий в RxSwift. Их можно разделить на несколько основных групп (назначение каждой из групп, думаю, говорит само за себя):

  • Фильтрующие
  • Трансформирующие
  • Комбинирующие

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

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

Введение в RxSwift. Часть 3. Subjects

Логотип проекта ReactiveX

Subjects (субъекты) расширяют поведение обозреваемых последовательностей, наделяя их свойствами обозревателя. Так как это обозреватель, то он может подписываться на обозреваемые последовательности, а благодаря, тому что он сам является таковым, он может ретранслировать полученные значения, а также транслировать новые. Так справедливо будет сказать, что субъекты выступают своеобразным прокси.

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

Введение в RxSwift. Часть 2. Observables

Логотип проекта ReactiveX

В прошлой статье мы разобрались с основными понятиями в мире Rx. Сегодня мы обсудим подробнее различные способы создания наблюдаемых последовательностей (Observables) и рассмотрим особенности подписки на транслируемые события.

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

Использование CocoaPods в Swift Playgrounds

Для своей серии постов про RxSwift я задумал использовать для наглядности Playgrounds, но тут встал вопрос, а каким образом подключить туда внешнюю библиотеку из CocoaPods? Напрямую это сделать не получится, но можно создать пустой проект, как обычно, сгенерировать workspace, а затем уже в него добавить playground. Подробности ниже.

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

Введение в RxSwift. Часть 1. Базовые принципы

Логотип проекта ReactiveX

RxSwift — это библиотека для работы с асинхронным кодом, которая представляет события в виде потоков событий с возможностью подписаться на них, а также позволяет применять к ним подходы функционального программирования, что сильно упрощает работу со сложными последовательностями асинхронных событий.

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

Broadlink RM mini 3

Когда начинаешь увлекаться темой умного дома, быстро приходишь к пониманию, что многие устройства, которые используются на ежедневной основе, оказываются неожиданно глупы. Кондиционеры, увлажнители воздуха, акустические системы и многое другое управляются только при помощи штатного пульта. Даже при наличии на борту Wi-Fi, многие операции (и как правило самое нужное, например, включение/выключение) остаются подвластны только ИК-пультам (которые, к тому же, имеют свойство теряться).

Остаётся единственный вариант: иметь некий универсальный пульт, а точнее ИК-хаб, который бы управлялся через приложение со смартфона. Ожидаемо, на AliExpress нашлось множество таких устройств, и я остановился на самом распространенном (и дёшевом) варианте: RM Mini 3 от компании Broadlink.

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

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

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

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

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