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

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

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

Операторы позволяют удобно преобразовывать последовательность приходящих событий в RxSwift. Их можно разделить на несколько основных групп (назначение каждой из групп, думаю, говорит само за себя):
- Фильтрующие
- Трансформирующие
- Комбинирующие
Сегодня мы рассмотрим самые показательные примеры из каждой группы, полный список операторов и их возможности всегда можно найти в документации.
Читать далее →

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

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

RxSwift — это библиотека для работы с асинхронным кодом, которая представляет события в виде потоков событий с возможностью подписаться на них, а также позволяет применять к ним подходы функционального программирования, что сильно упрощает работу со сложными последовательностями асинхронных событий.
Читать далее →
Когда начинаешь увлекаться темой умного дома, быстро приходишь к пониманию, что многие устройства, которые используются на ежедневной основе, оказываются неожиданно глупы. Кондиционеры, увлажнители воздуха, акустические системы и многое другое управляются только при помощи штатного пульта. Даже при наличии на борту Wi-Fi, многие операции (и как правило самое нужное, например, включение/выключение) остаются подвластны только ИК-пультам (которые, к тому же, имеют свойство теряться).
Остаётся единственный вариант: иметь некий универсальный пульт, а точнее ИК-хаб, который бы управлялся через приложение со смартфона. Ожидаемо, на AliExpress нашлось множество таких устройств, и я остановился на самом распространенном (и дёшевом) варианте: RM Mini 3 от компании Broadlink.
Читать далее →
Не говори, что не предупреждал
Не рекомендую повторять всё, что описывается в статье, если вы не чувствуете уверенности в своих силах. Под уверенностью я подразумеваю, что вы сможете самостоятельно разобраться с проблемой, если столкнетесь с ошибками в случае выполнения какой-либо из команд. Всё это лишает вас гарантии, есть риск превратить устройство в кирпич и т.п. Я не несу отвественности за любой вред, который вы можете себе причинить, я лишь описал свой опыт и руководствовался исключительно образовательными целями.

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