Мобильный кот
2.72K subscribers
88 photos
3 videos
2 files
87 links
Все, что считаю важным про жизнь мобильного разработчика

Шкаф с материалами
https://t.me/cat_with_mobile_cabinet
Download Telegram
Что такое универсальные приложения? У этого понятия, с точки зрения iOS-разработчика, есть два определения:

1) Приложения, которые могут работать не нескольких архитектурных решениях (различных устройствах, операционных системах и т.д.). Например, это единое для iOS, iPadOS и macOS приложение. Это круто, но об этом не сегодня.

2) Приложения, пользователем которого может стать человек вне зависимости от региональных и физических особенностей. И именно об этом я хотел бы сказать несколько слов.

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

При создании универсальных приложений вы решаете три вопроса:

Вопрос 1. Локализация - это поддержка приложением нескольких языков. Некоторые относят сюда и часовые пояса/календари, но нет, так как есть ...

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

Решение двух этих вопросов позволит вам значительно расширить аудиторию приложения, а значит и потенциально повысит продажи.

Немного подробнее об этом можете прочитать в моем гите.

Вопрос 3 - Доступность (Accessibilities). На этом я бы хотел заострить ваше внимание. Крайне важно, чтобы вы создавали универсальные приложения, доступные людям с (не)ограниченными возможностями, например слепым. Более того, для этого достаточно лишь немного предварительно продумать структуру интерфейса и воспользоваться доступными из коробки средствами.

Более того, поддежка механизмов доступности позволит вам:
- исключить излишнюю перегруженность интерфейса (если вы не можете добраться до элемента с помощью встроенного в iOS механизма доступности, то вероятно структура интерфейса слишком перегружена);
- подготовить приложение к UI-тестам, так как для их реализации требуется использование механизмов Accessibilities.

И вот вам отличный выпуск подкаста Запуск завтра "Как незрячие люди пользуются технологиями и как сделать их доступнее" - о важности того, чтобы ваши приложения были доступными. Рассказывает незрячий пользователь о крутости Яндекс.Такси и ужасном состоянии Яндекс.Go.

Apple Подкасты
Яндекс Музыка
YouTube
🗺 Roadmap - карта тем для начинающего разработчика.

Отличный проект прекрасной статьи от @artyom_ivanov. Пока еще версия 0.1 (как говорит автор), но надеюсь на скорый релиз 1.0 😀

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

https://artyom.space/swift-roadmap/

#продуктивность
♥️ Практики, используемые в ядре Swift

Я люблю копать исходный код Swift. Конечно же, как нормальный программист, почти ничего там не понимаю, но от этого интерес только возрастает😂.

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

Каждый раз я изобретаю велосипед и:
- то добавляю запятую перед каждым элементов, и в конце удаляю первый символ;
- то наоборот добавляю ее в конце, и потом удаляю последний символ;
- то контролирую номер элемента и добалвяю только там, где это требуется.

Задача тривиальная и никак не уровня "серьезного" разработчика. Но каждый раз я все делаю новым способом. Причем решение данного вопроса изменяется еще и в зависимости от языка, на котором я пишу код.

Сегодня в процессе изучения исходного кода типа Array и работы над разделом по массивам в моем справочнике по Swift на GitHub я наткнулся на довольно изящную реализацию данного вопроса, используемую при вызове свойства description у коллекций:

var result = ""
// ...
var first = true
for item in self {
if first {
first = false
} else {
result += ", "
}
debugPrint(item, terminator: "", to: &result)
}
// ...


Запятая добавляется перед каждым элементом, начиная со второго.

P.S. И что самое интересное, в данном куске кода используется inout - аргумент. Так что не такая уж это и плохая практика, видимо.

А как вы решаете такой тривиальный вопрос в своем коде?

#пишемхорошийкод #swiftcore
🏟Площадки для прокачки навыков программирования

Прошел отпуск, вышел Xcode 13 и Swift 5.5, а значит пора возвращаться к каналу. Скоро мы погрузимся в изучение акторов, новой асинхронки и зароемся в исходный код языка на яблочном гитхабе. А сейчас о другом.

Одним из важнейших этапов в жизненном цикле Swift-разработчика является трудоустройство. Подготовка к собеседованию - особо ценный, сложный и несомненно интересный процесс, в ходе которого вы прокачаете свои навыки.

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

Советую посмотреть каждый из сервисов.

- CoderByte
- Exercism
- Codewars
- CodingGame

Существует и множество других площадок, но вам несомненно хватит и четырех приведенных в статье.

Знаете и используете другие? Советуйте в комментариях.

Удачного кодинга!👩‍💻👨🏻‍💻🧑🏾‍💻
📕 Кое-что интересное, что сделает ваши приложения лучше.

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

Несколько дней назад я набрел на книгу Михаила Рубанова «Про доступность iOS». В книге очень доступно описываются доступные в iOS механизмы доступности 🙃 (слишком много доступности не бывает!).

Строго рекомендую к ознакомлению и надеюсь рано или поздно увидеть ее в бумажном формате на своей книжной полке.

Михаил, к слову - ведущий iOS-разработчик DoDo Engineering (пишут весь софт для одноименных пиццерий), и у него есть чему поучиться. Он, как никто другой, знает, насколько важно создавать приложения, которым могут пользоваться все, вне зависимости от физического состояния и возможностей.

☕️ P.S. Я пообщался с Михаилом и он проявил интерес к тому, чтобы стать специальным гостем на одной из наших будущих встреч Coffee&Code в Москве. Ждем с нетерпением!

Ссылка на книгу Про доступность iOS

Другие книги можно найти по тегу #книга
🛠 Что там с Xcode 13?

После первой недели работы с обновленной средой, свифтом и китом, могу сказать, что…

😊 Понравилось
- Обновление интерфейса.
- Автоимпорт библиотек в swift-файлы. Стоит только упомянуть UILabel, и среда автоматом добавляет import UIKit. Но какого это не работает с либами, загруженными из SPM и CocoaPods?
- Button Configuration. Прямо кайф

🙃 Не понравилось
- Увеличившееся время сборки проектов.
- Странно работающий автокомплит. Может он и крутой, но я пока его не понял.
- Баги, баги, способные привести к потере части кода, что у меня и произошло. Каким-то неведомым образом Xcode начал сохранять часть файлов не в папку проекта, а вообще в другие папки… Но при этом пока еще не было ни одного внезапного краша.

🧐 Вывод
- Если начал проект на предыдущей версии, то лучше заверши версию там же. Избегай мажорных обновлений до выпуска в прод.
- Новые проекты начинай на Xcode 13, особенно если хочешь пощупать новые возможности языка и iOS SDK.
- Храни и используй 2 версии среды, 12.5.1 для стабильной работы со старыми проектами, и 13 (примерно так делаю я всегда).

Вот вам пару программ, которые помогут в этом
- XcLauncher
- Xcodes

Ну или просто качай одну версию со стора, а другую с портала разработчиков.
👮🏼‍♂️О безопасности iOS 🔐

Общаясь с коллегами и знакомыми, пользователями устройств Apple, я стал замечать интересную тенденцию: многие считают, что «Раз я пользуюсь iPhone и mac, то с точки зрения конфиденциальности данных я в полной безопасности. Утечка невозможна, так как система не взламываема, а все устанавливаемые из AppStore приложения проходят жестокую модерацию». Особенно это заметно видно на фоне последней яблочной рекламной компании “Конфиденциальность. Это про iPhone”.

Но iOS и macOS небезупречны. Прекрасным доказательством этому служит расследование организации Amnesty International, получившее название «Проект Пегас» (почитать можно тут | ENG) или в августовском номере журнала Хакер. Если кратко, то на июль 2021 года даже последняя версия iOS (14.6) может быть взломана без необходимости пользователя совершать какие-либо действия.

Это конечно не значит, что за вами охотятся израильские шпионы 🕵🏻, но это говорит о том, что уязвимости существуют, а с выходом новых версий ПО - появляются новые. При этом неумелые действия пользователей делают ситуацию еще хуже, так как большинству из нас не нужно иметь дыры в защите: мы сами устанавливаем приложения из недоверенных источников и переходим по сомнительным ссылкам. Мы же уверены, что «продукцию Apple невозможно взломать».

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

Подобная ситуация была и с моими родителями, и это для людей в возрасте настоящее испытание.

К чему это я.

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

Ну и будьте просто хорошими людьми 😌. Всем отличного воскресенья
🎨 Релиз SF Symbols 3

В конце сентября вышла финальная версия яблочного «каталога и конструктора символов» SF Symbols 3.

Нововведения доступны для iOS 15, iPadOS 15, macOS Monterey (пока что находится в бете), tvOS 15, и watchOS 8.

- 600+ новых символов.
- Расширенные возможности цветовой кастомизации.
- Прокачанный импорт собственных символов.
- Местами обновленный интерфейс.

Скачиваем тут

👨‍🔬Мое мнение: программа обязательно к ознакомлению и употреблению.

Другие полезные #инструменты
💬Текстовое поле для ввода кода подтверждения из смс или email

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

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

В итоге оформил в качестве SPM-пакета.

📒 Кратко о возможностях:

- Настройка количества блоков и элементов в этих блоках (видите в середине разрыв между блоками?);
- использование как в коде, так и с помощью Interface Builder;

🛠 В общем, если кому потребуется:

- пользуйтесь в качестве готового решения;
- используйте в качестве основы для собственной реализации;
- говорите, что еще требуется, я допилю.

В следующем релизе расширю возможности кастомизации и доступное API. Далее добавлю конфигуратор элементов, с помощью которого можно будет формировать поле любого вида (текстовые префиксы, постфиксы, сепараторы между блоками).

Смотреть тут

#библиотека
📱 Apple Tech Talks 2021

Если вы участвуете в Apple Developer Program, то уже получили соответствующий mail. Продублирую: 25 октября - 17 декабря - даты проведения Tech Talks 2021, на котором его участники смогут задать вопросы спикерам и узнать, как использовать последние нововведения.

📣 Программа выступлений очень большая и будет пополняться вплоть за завершения. Вот несколько интересных лично мне тем:

- A conversation with SwiftUI Engineering
- Meet with Technology Evangelism
- Meet with App Review
- Meet with the App Store Connect team

Обратите внимание, что встречи проводятся в ограниченном формате по предварительной записи. Но начиная с 1 ноября их можно будет найти в приложении Apple Developer.

Все информация, включая расписание, доступна по этой ссылке.

#мероприятия
Минута до старта 🚀
👩‍💻ONLINE
📆31 октября (воскресенье)
19:00 по Москве


Coffee&Code в новом формате аудиочата. Как и всегда, пообщаемся на актуальные темы:

- обсудим как можно совмещать работу и прохождение собеседований с путешествием автостопом;
- как переквалифицироваться за пол года и залететь в хорошую компанию на интересный проект (траектория для начинающих);
- похоливарим за новые маки.

Встречаемся в 19:00 в этом телеграм-канале.
📚Книга "Карьера программиста"
✍️Автор Гэйл Лакман Макдауэлл

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

Книга "Карьера программиста" содержит бесценный материал, который поможет вам при собеседовании как в таких крупных гигантах, вроде Goolgle, Microsoft, Яндекс, так и в небольших компаниях. Помимо сотен вопросов по самым разных темам, от структур данных и алгоритмов, до многопоточности и баз данных. в ней содержатся бесценные рекомендации по составлению резюме, созданию правильного настроя, разговоре с HR и интервьювером.

Личное мнение: Я еще не дочитал книгу до конца, да и врядли сделаю это в обозримом будущем, потому что стараюсь разбирать каждый вопрос, если в нем встречается что-то непонятное. Эта книга может стать для вас прекрасным хобби, или просто возможностью отвлечься от других дел.

Оценка: 10 нанятых программистов из 10.
Основная проблема разработчика на UIKit в том, что ему нужно найти ответ на вопрос

Как продолжать писать приложения на UIKit, после того, как он попробовал SwiftUI в деле

Пост конечно шуточный, но со здравой долей истины. Попробуй SwiftUI и то, что возможно создать на нем за пол часа, и ты захочешь переписать остальные проекты, над которыми сидели предыдущие месяцы) Это как Combine, да и реактивное программирование в общем: получив в руки этот молоток все вокруг стало казаться гвоздем.

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

За наводку спасибо @g01dt00th

Как смотреть с плохим знанием английского

🤖Ни для кого не секрет, что не так давно Яндекс открыл возможность синхронного перевода видео. Пользуйтесь! Работает довольно достойно. Но лучше все же изучайте английский, он вам потребуется, когда будете устраиваться на работу с иностранную компанию.
🖖Друзья, сегодня (13 ноября) с 13:00 до 16:00 Яндекс проводит Yet another Mobile Party — онлайн митап для iOS- и Android-разработчиков.

Все профессии имеют свою темную сторону, о которой не принято говорить. В необычном формате видеоподкаста мы обсудим какие страхи испытывают тимлиды, поделимся самыми страшными историями про свои факапы и FOMO в разработке, обсудим Code review «здорового человека». В завершение встречи вместе с психологом поговорим про страхи разработчиков.

Митап БЕСПЛАТНЫЙ, для ВСЕХ ЖЕЛАЮЩИХ, пройдет онлайн.

☕️ Так что, если вы сегодня не пошли на нашу встречу Coffee&Code, то вот вам другой хороший вариант.

📨 Ссылка на трансляцию придет после регистрации → https://clck.ru/YniqX