Смотрите WWDC 2025 вместе с Surf и участвуйте в розыгрыше 🎧
Готовы к WWDC? Подключайтесь к нашей трансляции 9 июня в 20:00 по Москве. В прямом эфире мы вместе с сёрферами разберём главные анонсы и свежие решения Apple. Ожидается много интересного: от революционных обновлений iOS 26 и macOS 26 до новинок в мире ИИ-технологий от Apple.
Присоединяйтесь к нашему обсуждению. На стриме будут Head of Flutter Surf, Евгений Сатуров, и наши опытные iOS-разработчики — Кирилл и Антон. Они поделятся своим экспертным мнением о свежих решениях Apple. Будем активно общаться в чате, делиться впечатлениями и мнениями о презентации.
Мы запускаем интенсивы в формате школы — онлайн-занятия, которые помогут разобраться, что такое работа в IT и с чего начать. Погрузиться вместе в IТ-профессии: мобильную и фронтенд-разработку, бизнес-анализ и тестирование ПО.
Для кого: для студентов, джунов и всех, кто хочет в IT, но не знает, с какой стороны подступиться
Зачем: чтобы получить крепкую базу по востребованным направлениям. Говорим про разработку, тестирование, бизнес-анализ — и, да, немного про AI тоже. Тем, кто проявит себя, предложим продолжить обучение уже внутри команды Surf.
Чему именно будем обучать:
QA — разберёмся, как искать баги и помогать делать продукты лучше.
BA — научим превращать идеи заказчика в понятные задачи для команды.
Разработка —Android, iOS, Flutter (один код — несколько платформ), Frontend.
Можно приходить слушать все занятия и потом выбрать направление, которое откликнется.
Что ещё:
Никакой духоты и формальностей, объясняем по-человечески.
Примеры — с реальных проектов Surf.
Поощряем нейроэнтузиазм: покажем, как AI может помочь, и дадим применить это в заданиях.
Если нужно — оформим как учебную или производственную практику, с документами поможем.
Расписание, подробности и форма заявки — на сайте школы.
Если у тебя остались вопросы про школу, пиши нам на Хабре или в Telegram.
Google I/O 2025: два вечера главных анонсов вместе с Surf
20 и 21 мая — подключайся к нашим стримам по Google I/O. Будем вместе следить за анонсами новинок, делиться первыми впечатлениями и обсуждать всё самое интересное из мира технологий и разработки в прямом эфире.
Смотрим и комментируем:
20 мая (вторник) → 20:00 — Google Keynote: все главные анонсы и будущее технологий от Google.
Как работать с реактивным кодом в iOS на примере Combine
Пожалуй, каждый iOS-разработчик видел в требованиях вакансий «знание фреймворков RxSwift, RxCocoa». Эти инструменты основаны на концепции реактивного программирования.
Реактивное программирование, как следует из названия, основано на реакции на событие: пользователь взаимодействует с интерфейсом и ждёт реакцию от приложения. Этот подход популярен в фронтенд-разработке, в том числе на iOS.
Мы в Surf долгое время избегали «реактивщины» в приложениях. Во-первых, это лишние зависимости. Во-вторых, подобные библиотеки несут в себе не только преимущества, но и проблемы с дебагом, сложностью поддержки кода и так далее.
Однако с выходом Combine и SwiftUI, мы решили начать внедрять реактивный подход в наши приложения. Благо, теперь не нужны сторонние решения: хватит того, что предоставляет Apple. Давайте посмотрим, как можно работать с реактивным кодом.
Главные элементы Combine, с которыми происходит работа:
1) Publisher — издатель
Протокол, указывающий, что тип может передавать последовательность значений со временем. Publisher предоставляет данные только подписчику (Subscriber) и делает это, когда данные становятся доступны. Без подписки Publisher не активен.
Publisher описывается двумя ассоциированными типами: <Output, Failure>
Output — тип выдаваемых значений
Failure — тип возможной ошибки. Если ошибок быть не может, используется Never.
2) Subscriber — подписчик
Отвечает за запрос и получение данных от издателя, а также за обработку ошибок. Имеет типы <Input, Failure>:
Input — тип входных данных
Failure — тип ошибки
Subscriber сам инициирует запрос и управляет объёмом поступающих данных. Основные способы обработки:
sink(receiveCompletion:receiveValue:)Принимает два замыкания: первое вызывается при завершении (успешно или с ошибкой); второе — при получении значений.
assign(to:on:)Присваивает полученные значения свойству объекта по keyPath.
3) Operators — операторы
Методы, преобразующие данные и потоки. Операторы — это промежуточное звено между издателем и подписчиком. С их помощью строятся цепочки обработки, трансформации и фильтрации данных.
4) Subjects — субъекты
Особый вид Publisher. Объекты, реализующие этот протокол, могут отправлять значения подписчикам через метод .send(_).
Subjects полезны для интеграции императивного кода: позволяют вручную вставлять значения в поток.
Управление подпиской
Publisher продолжает отправку до завершения или ошибки. Если подписка больше не нужна, её можно отменить с помощью метода cancel(). Все подписчики реализуют протокол Cancellable.
23 апреля в 20:00 приглашаем воронежских разработчиков на неформальный митап. Для тех, кто не сможет прийти офлайн, будет трансляция.
Никаких скриншотов кода на слайдах. Никакого душного обсуждения документации. Поговорим о том, что окружает нас вне работы. Прокачаем софт-скиллы и нетворкинг.
В программе митапа три доклада:
Лёша, Android-разработчик Surf — «Дедлайн "вчера": как работать с приоритетами».
Как рассеивается внимание? Как ставить приоритеты в работе с командой? Когда нужно выносить переписку в звонок, а когда можно обойтись текстом? Ответим на эти и многие другие вопросы про приоритеты в работе и жизни.
Дима, Flutter-разработчик Surf — «Тимлид — друг или враг? Или так»?
Расскажу о роли тимлида, но со стороны нижестоящего сотрудника. Что мне нравится/что не нравится в лиде, что для меня кажется полезным, а смысл чего я не понимаю.
Кирилл, iOS-разработчик, наш друг и гость из Una Financial — «Work-life health для IT-шника среднего возраста».
Поделюсь жизненными проблемами разработчиков и способами их решения. Внимательный слушатель вообще сможет их избежать! Обсудим, как сделать жизнь лучше, повысить её качество. Максимально продлим трудоспособный возраст.
Митап пройдет 23 апреля, в 20:00, в воронежском пространстве «Eventuki»: ул. Фридриха Энгельса, 52.
Участие в митапе бесплатное, чтобы прийти или получить ссылку на трансляцию, нужно зарегистрироваться 👈
Запись трансляции обязательно сохраним, но если вы из Воронежа, мы очень ждём понетворкать вживую. До встречи 😉