Мой Mac Mini 2011 года, хотя уже давно не обновляется, последние года 4 исправно служил мне в качестве домашнего сервера. Однажды, без всяких на то причин, он внезапно перестал включаться, уходя в бесконечную перезагрузку. Короткая диагностика показала, что с железом всё в порядке, просто слетела операционная система (которая не переустанавливалась года с 2016). Кажется всё просто — переустанови и живи дальше, но я бы не стал писать этот пост если бы так оказалось на самом деле.
Читать далее →
Окружение: Swift 5, iOS 14, Xcode 12
Несколько лет назад, ребята из Фейсбука столкнулись с неприятным багом: количество непрочитанных сообщений в мессенджере иногда расходилось с таковым в других частях страницы. К проблеме было решено подойти системно, а именно придумать способ гарантировать консистентность данных, используемых в компонентах веб-приложений. В результате чего появился шаблон проектирования Flux.
Чуть позже Дэн Абрамов и Эндрю Кларк представили миру архитектуру Redux (читается как ридакс), которая стремительно набрала популярность в мире Javascript-разработки. Её подходы являются логическим развитием Flux и применимы не только в рамках экосистемы Javascript и веб-приложений.
Читать далее →
Для мобильных приложений очень часто требуется разместить всякую вспомогательную информацию: лендинги, правила использования, политику конфиденциальности и прочее. Для этих целей, особенно на начальном этапе, удобно использовать хостинг файлов в 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 — это библиотека для работы с асинхронным кодом, которая представляет события в виде потоков событий с возможностью подписаться на них, а также позволяет применять к ним подходы функционального программирования, что сильно упрощает работу со сложными последовательностями асинхронных событий.
Читать далее →