Сёрф iOS-разработка
1.34K subscribers
384 photos
25 videos
95 links
Download Telegram
Светлана, iOS-разработчик, в новой статье на Хабр показала изменения одного из самых проблемных мест в SwiftUI — навигации. iOS 16 обзавёлся совершенно новым API для работы с ней!

Самое основное собрали в посте. Подробности и примеры с кодингом ждут тебя в статье 😌
👍4🤩2
«В один прекрасный день на встрече отдела product manager приносит весть, что пора бы в чат добавить поддержку голосовых сообщений…»

Начало интригующее? Илья, iOS-разработчик Surf, написал подробную статью о нативной визуализизации голос в iOS для блога на Хабр.

Материал логически поделён на две части — физический аспект и программный уровень.

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

Для тех, кто хочет погрузиться в тему детальнее, Илья собрал материалы, которыми пользовался:

🔹Глоссарий
🔹Статья Apple про визуализацию звука
🔹Swift imports fixed-size C arrays as tuples
🔹О преобразовании Фурье
🔹Про задержку звукового сигнала
🔹Спектральный анализ
🔹​​CMBlockBuffer
🔹Запись с помощью AVAssetWriter
🔹О PCM
🔹Ещё немного об AVFoundation
🔹Лекция про АЦП
👍9
Стартовать в IT сложно: курсы, стажировки, первые собесы — это 🤯

Александр, наш iOS TechLead, собрал для новичков подробный FAQ о пути iOS-разработчика. Многие рекомендации универсальны и подойдут не только любителям Swift и Apple.

Вот все его советы:

1️⃣ С чего начать путь iOS-разработчика
2️⃣ Что и как изучить
3️⃣ Первое собеседование
4️⃣ Навыки командной работы
5️⃣ Чем занимается iOS-разработчик

Сохраняйте и делитесь с друзьями 😉
👍7
1️⃣ С чего начать путь iOS-разработчика?

Почему именно iOS?

Ответа на вопрос нет — надо идти туда, где тебе больше интересно. Это может быть мобильная разработка, фронтенд, бэкенд, тестирование, да что угодно! Главное, чтобы тебе нравилось. Лучше пробовать еще во время учёбы в университете, и на выходе поймёшь, к чему лежит душа.

Онлайн-курсы/стажировка/самостоятельное обучение — что выбрать?

Есть разные мнения. Кто-то искренне верит, что онлайн-курсы — отличная точка старта, особенно, если правильно их выбрать. Есть курсы, где дают не только базу знаний, но и помощь с трудоустройством.

Думаю, это подойдет не для всех. Надо понимать, что некоторые действуют из корыстных побуждений, а не из желания развивать спецов. Если решились на курсы — внимательно изучите отзывы, поговорите с реальными людьми, проходивших там обучение, почитайте профильные сообщества.

Стажировки — тоже хорошая возможность для старта. Особенно, если они проводятся на безвозмездной основе. Особенно, если это коллективный курс, и самых успешных обещают нанять впоследствие на работу.

Чтобы стать на стажировке лучшим, надо подойти к ней с некой «базой». Если у вас есть реальное желание устроиться на работу именно к этому работодателю — стоит заранее самостоятельно получить некоторые знания, чтобы на старте быть на голову выше других. В любом случае, стажировка учит взаимодействовать с другими людьми, и после её прохождения вы точно станете опытнее.

Я бы выбрал путь самостоятельного обучения. Да, его тяжело построить, придётся искать информацию самому, но это тоже важный навык. В интернете можно найти roadmap-ы разработчика, и оттолкнуться от них. Для получения практических навыков я бы советовал придумать/найти pet-проект, и начать набивать себе «шишки».
👍6
2️⃣ Что и как изучить?

Нужна ли математика?

На старте — нет. Но для специфичных областей, либо на более высоких позициях — пригодится. Хотя бы для обоснования путей решений проблем, сложности решений, оптимизации времени выполнения и т.д.

От себя добавлю: математика — точная наука, которая не терпит двоякого толкования и требует четкого обоснования. Любое доказательство теоремы — это всегда выверенная последовательность действий, последовательность фактов. В этом она во многом сходна с программированием.

У всех были случаи, когда: «Ну не может оно так работать! Да как так-то»?!
А потом находите баг в коде, и такие: «Ага, ну ладно, понял».

Математика позволяет выстроить логическое мышление — и это сильно пригодится вам, в любой деятельности, не только в разработке.

Нужно ли знание алгоритмов?

Здесь я бы дал ответ схожий с предыдущим — на ранних этапах нет, позднее — пригодится. Когда обычных инструментов для решения задач вам не будет хватать — паттерны и алгоритмы станут вашими друзьями.

Как построить обучение наиболее эффективно?

Продолжу тему с самостоятельным обучением: pet-проект, собственные «шишки», Google. И roadmap-ы разработчика как указатель.

Важно: наверняка вы будете сталкиваться с проблемами, которые можно обойти, если сделать немного другой дизайн, немного по- другому поставить требования...
Не надо так делать. В жизни такое возможно, но не всегда.

Ещё, не все найденные в процессе решения могут быть адекватными и оптимальными. Лучше будет найти команду, например, чтобы совместно разрабатывать pet-проект. Или же ментора, для этого есть специальные платформы. Найти сообщество, где вам готовы будут дать ответы. То есть, поискать людей с немного другим опытом.

Только контактируя с другими разработчиками можно стать опытным специалистом.
👍4
3️⃣ Первое собеседование

Что учить перед собеседованием и как?

Универсального ответа нет, внимание по-разному уделяют:

• навыкам программирования в целом;
• конкретно вашим знаниям по iOS- разработке;
• софт-скиллам — коммуникация, умение мыслить и не теряться в критических ситуациях.

Но, всё-таки, стоит посмотреть общие темы в разрезе любого языка программирования:

‣ принципы программирования;
‣ паттерны, подходы;
‣ компьютерные сети, git.

И по основам iOS:

- управление памятью;
- жизненный цикл;
- хранение данных;
- основные структуры и как они работают;
- основные UI-компоненты и как они работают.

Не заучивайте точные формулировки из интернета, это не экзамен в университете. Гораздо важнее — понимаете ли вы их сами.

Что вас ждет на собеседовании?

Опять же — универсального ответа нет. Везде по-разному. Общий совет — не теряться и не думать, что вас съедят на собеседовании. Все когда-то там были.

Ещё совет: походите по собеседованиям в разные компании, старайтесь запомнить, что спрашивают. Если не знаете ответа — отметьте себе это и изучите вопрос позднее. Так, со временем, вы накопите базу знаний и опыт собеседований.

И не стесняйтесь говорить, что чего-то не знаете. Можете и предположить правильный ответ. Умение находить решение, мыслить, а не только знать — это тоже пункт, на который обращают внимание.
👍4
4️⃣ Навыки командной работы

Что это за навыки?

Софт-скиллы, навыки командной работы — названий много, суть одна: они позволят успешно работать в команде.

На мой взгляд, самые важные для начинающего разработчика:

1) Ответственность.
2) Дисциплинированность.
3) Умение изучать новое и работать с информацией.
4) Умение задавать вопросы.

Насколько важны эти навыки для разработчика?

Разработчик — это не только человек, весь день пишущий код. Он ещё и способен:

• донести свое мнение до других;
• дать обратную связь по работе своему коллеге;
• принимать верные решения в критических ситуациях.

Такие скиллы не менее важны, чем технические навыки, потому что все мы работаем в команде.

Ваше развитие может пойти не по технической ветке, а в сторону управления людьми. Например, на позицию TeamLead. И вот тут ваши soft-skills сыграют решающую роль.
👍4
5️⃣ Чем занимается iOS-разработчик?

Чем занимаются iOS-разработчики помимо написания кода?

Разговаривают, много разговаривают — обсуждают решения, советуются по реализации тех или иных фичей, митинги, ретроспективы, различные синки по рабочим вопросам. Разговаривать и участвовать в переписках придется часто.

Проектируют, много проектируют — «семь раз отмерь, один раз отрежь» здесь показательно работает. Всегда лучше грамотно спроектировать решение, чтобы получить точную оценку его реализации и полную картину необходимых действий, чем править бесконечно появляющиеся баги.

Ограничен ли iOS-разработчик лишь платформой iOS?

Написание различных автоматизаций, а также тесное сотрудничество с backend-командой позволяют получить знания в смежных областях.

Есть шанс покодить не только на Swift, но и на Python, Groovy, познакомиться с KMM или Flutter. Можно получить знания в области работы сетевых протоколов, безопасности информационных систем, тестировании или дизайне.

Ограничением здесь служит только ваше свободное время, которое надо будет умело распределять между изучением профильных и смежных направлений.
👍7
Как вам формат лонгридов? Делать ещё подобные посты?
Anonymous Poll
91%
Нравится, давайте ещё 👍
9%
Не удобно, давайте по-другому 👎
1
Делимся с вами крутым Live Coding от нашего разработчика!

В нём Владислав обозревает новинки с WWDC 2022 и показывает, как Surf внедряют новые фишки. Раскладываем всё не по полочкам, а по строчкам 💪

Смотри видео на нашем YouTube-канале.
🔥7
Отобрали для вас инсайты из ежегодного исследования DevCrowd 📊

Что нужно знать о нём:

• Проводил Егор Толстой из JetBrains вместе с партнёрами.
• Опросили 900 iOS разработчиков.
• Информация полезная и «недушная».

Смотрите наши карточки, а за полным ресёрчем переходите по ссылке в заголовке.
👍3🔥3
Как создать виртуальную карту лояльности для добавления в Wallet

В цифровом бумажнике хранятся банковские карты, карты лояльности, билеты и прочие полезные штуки для разных сфер жизни и бизнеса. Вполне вероятно, что в работе вам предстоит столкнуться с задачей сделать такую карту.

Меня зовут Александр Чаусов, я iOS TechLead. Давайте разберёмся, как создавать карту для Wallet.

1️⃣ Создаём файл .pkpass
Перед стартом рекомендуем открыть документацию.

• В консоли разработчика заводим identifier для pass: подробнее — в документации в секции Creating Pass Packages ➡️ Setting the Pass Type Identifier and Team ID.

Создаём под него сертификат. Signing request к бюро сертификации по традиции делаем через keychain на своей машине, а потом делаем то, что написано в Creating Pass Packages ➡️ Signing and Compressing the Pass.

Скачиваем сертификат, сохраняем его в keychain, запоминаем созданный identifier.

Скачиваем example-материалы, выбираем понравившийся, открываем pass.json. Его нужно изменить: достаточно заменить passTypeIdentifier и teamIdentifier.

В тех же материалах находим тулзу signpass. Из проекта signpass.xcodeproj, который скачали в файлах ранее, собираем executable-файл. Подробности — в секции Signing and Compressing the Pass.

• Запускаем из консоли ./signpass -p Lollipop.pass, где Lollipop.pass — название директории с вашими файлами для pass.

• На выходе должен получиться файл с расширением .pkpass.

⚠️ Для всех этих манипуляций нужен оплаченный аккаунт разработчика Apple.

Первый этап завершён: можно открыть этот файл и полюбоваться на него. А можно даже переслать по почте на девайс и полюбоваться там.

В следующих постах расскажем, как настроить контент и связать карту с приложением. До связи 😉
🔥9👍1
Как создать виртуальную карту лояльности для добавления в Wallet. Часть 2: настройка контента

С вами Александр Чаусов, iOS TechLead. Продолжаем разбираться, как создать карту для Wallet.

В предыдущем посте обсудили, как создать файл .pkpass. Дальше всё будет крутиться вокруг него.

Директория .pass содержит файл pass.json: его нужно отредактировать, чтобы получить нужный контент на карте.

Важные ссылки:

🔹 Документация
🔹 Описание всех полей, которые могут быть использованы в pass.json

Обязательные поля
Которые должны быть определены в json-файле

Краткое описание карты: отображается при добавлении и на задней стороне карты.
Версия формата файла. Значение должно быть 1.
Название организации, которая выдаёт карту.
Identifier, который создавали на первом шаге.
Серийный номер карты.
TeamID команды-разработчика — с первого шага.

⚠️ Уникальность карты обеспечивается связкой полей
passTypeIdentifier
и
serialNumber
. Две карты с одинаковыми значениями считаются одинаковыми: если установить в кошелёк карту, у которой значения этих полей совпадают со значениями существующей, кошелёк заменит старую карту на новую.
🔥7
Элементы, из которых состоит pass 👆

На что обратить внимание в документации
Подложите в папку <Название>.pass рядом с json-файлом:
‣ icon.png/[email protected] — иконка размером 29*29, отображается при добавлении карты в wallet и на lock-экране.
‣ logo.png/[email protected] — из документации «The allotted space is 160 x 50 points; in most cases it should be narrower», отображается в верхнем левом углу.
‣ strip.png/[email protected] — картинка-задник, которая отображается за primary-field. В sample-карте от Apple она размером 312*123.
Обратите внимание на секцию документации про barcode: там указаны ограничения, допустимые поля, форматы отображения кода.
Возможна локализация карты на несколько языков.
Цвета кастомизируются.
Очень интересная секция в документации «Relevance Information Displays Passes on the Lock Screen»: возможность показать карту на lock-экране, когда пользователь подошел к определённой локации или наступило определённое время.

⚠️ Суперважный элемент — поле
storeCard.backFields
. На задней стороне обязательно должна быть инфа о том, кто выпустил карту лояльности и как до него достучаться. Это требование Apple: будут проверять на ревью (пункт 1.5).

Итого
1️⃣ Редактируем файл pass.json, подглядывая в документацию и описание полей.
2️⃣ На выходе получаем json, по которому генерируем карту с дизайном, похожим на дизайн из макета.
3️⃣ Перекидываем карту по почте на свой девайс и проверяем, как она выглядит вживую.

В следующем посте расскажу, как связать карту с приложением.
👏7
Первый эфир в канале: как РМ стал iOS-разработчиком в Surf 🤯

В четверг поговорим с Антоном, участником Летней Школы, о начале пути в iOS. Он поделится опытом с курсами, бэкграундом и pet-проектами.

Ещё Антон покажет структуру и преимущества стажировки в Surf — подробно, прозрачно, с примерами.

Формат эфира будет полезен как новичкам, так и тем, кто уже делает шаги в iOS-разработке. Со всем поможем — приходи 😌

Когда и куда?

🗓 24 ноября
17:00
📍 Telegram-канал Surf iOS Team
👍14