Открыт для новых идей, отлично отношусь к конструктивной критике, и вижу в ней только пользу и точки роста. Имею опыт работы в команде.
разработка мобильного приложения SMP и разработка SDK для чата поддержки.
- Мигрировал SQLite БД на новую версию, в миграции было необходимо преобразовать данные в новый формат, также изменить одну из таблиц. Также были написаны юнит тесты, на изменения и на миграцию.
- Реализовал автоматическую отправку сообщения о собранной версии приложения для тестирования в testflight в комментарии к задаче в трекере.
- Настроил в gitlab CI/CD запуск swiftlint, собрал конфигурацию по codestyle внутри команды, использовал возможность удаленных конфигураций, чтобы использовать их на нескольких проектах, так же был настроен локальный запуск. Таким же образом настроил инструмент Periphery. Для удобного отображения результатов работы инструментов, преобразовал вывод в формат gitlab codeclimate, благодаря чему, ошибки подсвечиваются прямо в МР.
- Добавил отображение в МР процента покрытия кода тестами и отображение в изменениях какие строки кода запускаются при тестах а какие нет.
Работа в аутсорсинге и аутстафинге.
В мои задачи входило:
Проекты:
Участвовал в разработке приложения "Кинопоиск" для iOS и tvOS:
На проекте решал разного рода задачи, были задачи по реализации экранов приложения, целых фичей, инфраструктуры задачи, коммуникация с другими командами. Участие в планировании: уточнение ТЗ, разбор требований и последующее формирование задач и оценка трудозатрат. Из необычных и интересных задач: реализовал не блокирование телефона при активной загрузке контента. Автоматическое выключение просмотра тв канала, при неактивности пользователя заданное время, очень было интересно продумать как реализовать перехват различных событий: нажатия на экран, и на пульт для appleTV, смена ориентации, и чтоб все это работало надежно, даже при будущих изменениях в интерфейсе.
- Участвовал во внедрении tuist. Успешно перенес главный таргет на турист.
- Писал скрипты автоматизации на bash, один из примеров это обновления версии "tuist", с последующим созданием ветки и коммита.
- Есть опыт работы с KMM и GrapQL. Использовали для сетевого слоя, который работал с технологией GraphQL. Успешно реализовал несколько сетевых запросов.
- Поработал с разными видами реализации UI, поддерживал iPhone и iPad , также и для appleTV: новые экраны верстал, где возможно на swiftUI, или кодом. Также приходилось работать со xib и с storyboard.
- Исправлял легаси код на objective-c.
- Принял участие в реализации фичи «Мое» на двух платформах: iOS, tvOS. Реализовал список загрузок и сетевое взаимодействие с сервером. Получил опыт работы с focus’ом на tvOS.
- Плотно работал с combine. Использовал его для сетевых запросов, за наблюдением за переменными, за состояниями приложения.
- Все новые фичи закрывались фича-флагами и удаленно управлялись через firebase, в процессе работы часто приходилось создавать новые флаги в приложении и в firebase, также удалять уже старые неиспользуемые.
- Работал с webview, реализовал обработку действий и интеграцию с js кодом страницы.
- Поработал с модулем загрузок контента, исправлял различные ошибки, добавлял новые поля в сущности CoreData, а также с загрузками HLS контента в фоне. Исправил неверно формировавшиеся логи загрузок, в результате получил достоверную аналитику и улучшил показатели успешных загрузок.
- С многопоточностью работал с помощью GCD, в новых модулях уже использовал Swift Concurrency.
- Основным менеджером зависимостей был SPM, но для некоторых старых модулей использовался cocoapods.
- Работали командами по 10 человек, использовали методологию Agile, с двухнедельными спринтами. Приходилось общаться с другими командами, и бизнес-юнитами, для решения задач. Благодаря этому, сильно прокачались навыки работы в команде.
- В команде работали с git, используя модель git-flow, потом переехали в Arcadia(собственная VCS), там использовался подход Trunk Based Development. При переезде приходилось переносить часть веток, которые были в работе, пользоваться rebase'ом и другими инструментами, это дало много новых полезных знаний и умений в работе с git.
Стек: swift, objc, SwiftUI, MVVM, VIPER, Combine, Kingfisher, Alamofire, URLSession, KMM, GraphQL, Swift Concurrency, Firebase, Remote configs, Core Data
Разработка MVP-приложения двухфакторной авторизации для геоинформационного сервиса (NDA):
Написал приложение из 4 экранов с архитектурой MVP. Главное ограничение проекта - это не использовать сторонние библиотеки.
- Верстка экранов кодом. Хранение токенов в keychain, уведомления имели возможность выбора действий и их обработки, не входя в приложение. Использовал AVFoundation для считывания QR-кодов.
- В качестве менеджера зависимостей использовался cocoapods.
Стек: AVFoundation, swift, URLSession, Swift Concurrency, Rich Notification, UserDefaults, Keychain, MVP
White Label приложение (NDA):
Внутренний проект, таргет ios 16+
Реализация пары экранов, для демонстрации концепции.
- Интерфейс и навигация полностью на SwiftUI, архитектура MVVM с добавлением концепций UDF, вью получает от модели состояние, а вью может вызвать у вью модели одну единственную функцию по обработке действий, которые определены во вью модели, больше взаимосвязей между ними нет.
Стек: swiftUI, Swift Concurrency, MVVM
GreyWebs VPN:
Работа над приложением для создания VPN соединения.
Также занимался выкладкой приложения в AppStore и отвечал на вопросы при проверке приложения и исправлял замечания.
- Внедрил crashlytics и успешно снизил количество крашей приложения.
- Добавил remote configs
- Переделал экраны под новый дизайн
Стек: swift, MVC, NetworkExtension, Firebase, Remote Configs
Rick and Morty pet-project:
Это учебный проект, для закрепления теоретической информации. Делал его во время прохождения курса "ios разработчик" в учебном центре Девелоники. В результате меня взяли на стажировку. Код можно найти в моем гитхабе.
Реализация приложения для просмотра информации о сериале RickAndMorty. Данные берутся по REST API из rickandmortyapi.com
Использую карту для проставления отметок мест где было запущенно приложение, сделал для того, чтобы попробовать интегрировать карты в приложение.
Стек: Storyboard, MVC, Core Location, Core Data, Google Maps, SPM
Обучался проектированию систем телекоммуникации, построению легко масштабируемых систем коммуникаций, выделению адресов, настройке роутеров и маршрутизаторов, а также администрированию рабочих мест, на базе windows и linux. В этот период написал простенькое приложение для обмена сообщениями, в качестве бекэнда использовал firebase.
Нас обучали написанию ПО, взаимодействию с операционными системами, работы с базами данных на примере MySQL. Но также нас обучали устройству Компьютера, процессора, его элементной базы. Как процессор производит вычисления и исполняет команды. Обучали проектированию плат, а также способам их изготовления. В процессе обучения я впервые познакомился с языком swift, и IDE Xcode, в тот момент как раз вышел фремворк ARKit, и я попробовал с его помощью написать простое приложение, которое в поле зрения находит специальные метки и на эту плоскость рисует трех-мерный объект.
Обучение было базовым навыкам для iOS разработки, в основами по git и xcode, также затрагивались темы про публикацию приложений. В течении всего обучения, у нас был проект. Для проекта дизайнером были нарисованы экраны в figma, которые мы реализовывали. Бекендом выступал бесплатный сайт по сериалу рик и морти. Взаимодействие с ним было через REST API. В конце обучения было готовое приложение в которм можно было посомтреть персонажей, места и серии, сериала рик и морти.