Как стать автором
Обновить
23
0
Андрей Зарембо-Годзяцкий @shadow_of_irbis

Руководитель мобильной разработки в OZON Fintech

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

Проверка внедрения зависимостей на Swift

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

image


Проект с Dependency Injection похож на елочную гирлянду — он красив, радует детей и взрослых. Но если где-то не внедрить зависимость, отключится целый сегмент приложения. И, чтобы найти источник проблем, придется проверять все зависимости в этом сегменте.


В этой статье описаны несколько вариантов поиска пустых зависимостей. А в нашем репозитории есть небольшая библиотека, которая поможет в этом: TinkoffCreditSystems/InjectionsCheck

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

Эффективная DI библиотека на Swift в 200 строк кода

Время на прочтение7 мин
Количество просмотров10K
Библиотека EasyDi содержит контейнер зависимостей для Swift. Синтаксис этой библиотеки был специально разработан для быстрого освоения и эффективного использования. Она умещается в 200 строк, при этом умеет все, что нужно взрослой Di библиотеке:

— Создание объектов и внедрение зависимостей в существующие
— Разделение на контейнеры — Assemblies
— Типы разрешения зависимостей: граф объектов, синглетон, прототип
— Разрешение циклических зависимостей
— Подмена объектов и конктесты зависимостей для тестов

В EasyDi нет разделения на register/resolve. Вместо этого зависимости описываются вот так:

var apiClient: IAPIClient {
  return define(init: APIClient()) {
    $0.baseURl = self.baseURL
  }
}

Cocoapods / EasyDi
Github / EasyDi

Под катом очень краткое описание «Зачем DI и что это», также примеры использования библиотеки:

  • Как использовать и типы зависимостей
  • Как тестировать c подменой объектов
  • Как можно это использовать для A/B тестов
  • Как собрать VIPER-модуль
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии7

Аппроксимация кривой в траекторию стрелы для игры St.Val

Время на прочтение6 мин
Количество просмотров14K
В этом посте я расскажу, как создать в мобильном приложении управление c помощью рисования траектории. Такое управление используется в Harbor Master и FlightControl: игрок пальцем рисует линию, по которой движутся корабли и самолеты. Для моей игры St.Val потребовалась аналогичная механика. Как я её делал и с чем пришлось столкнуться — читайте ниже.



Пара слов об игре. В St.Val основная цель соединять сердца по цвету с помощью стрел. Задача игрока: построить траекторию полета стрелы так, чтобы она соединяла сердца в полете. Игра создавалась на базе Cocos2D 2.1 под iOS, ниже видео игровой механики.



Основные задачи


Для создания управления нужно решить три задачи:
  1. Считать координаты
  2. Сгладить и аппроксимировать их
  3. Запустить по ним стрелу


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

Под катом решение этих задач и ссылка на демонстрационный проект.

Читать дальше →
Всего голосов 26: ↑21 и ↓5+16
Комментарии3

Психоэргономика

Время на прочтение2 мин
Количество просмотров1.2K
:-)

В войне с лишними кликами и тормозящими приложениями мы часто забываем о восприятии глазами конечного пользователя. Поясню, что это значит на простом примере: MacOS скрывала консоль с протоколом загрузки, а Windows — нет. В результате MacOS казалась проще людям, далеким от IT.

Опыт работы с восприятием конечного потребителя накоплен в разных областях – от производства роботов до памперсов. Я подобрал несколько показательных примеров.

Читать дальше →
Всего голосов 110: ↑93 и ↓17+76
Комментарии39

Twitter + динамический IP

Время на прочтение1 мин
Количество просмотров909
Сегодня при обсуждении с другом проблемы динамических IP адресов и домашнего сервера решили, что для определения IP-адреса можно использовать не только динамические DNS, но и Twitter. API у него открытый, можно не только записывать статус(т.е. IP), но и считывать. Несколько часов работы руками и можно получить легкий автоматический динамический DNS, поставив код отправки на крона. Или написать демон/службу, чтобы следило за изменением внешнего IP. А можно расширить функционал и передавать какую-нибудь полезную информацию или статус сервера.
Всего голосов 10: ↑8 и ↓2+6
Комментарии3

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность