iOS Такой 🍏
3.39K subscribers
424 photos
10 videos
2 files
303 links
IT | Подкасты | Apple | iOS Материалы | Swift

Реклама: @new_repository

Тёплый чат: https://t.me/+tzWmsOMTPpFjMzAy

Бусти: boosty.to/dimov_ios
Download Telegram
Channel created
Привет! Меня зовут Даниил Димов. Я основатель комьюнити EasySwift, работаю в Online Premier iOS разработчиком.

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

Если какой-то пост был вам полезен – ставьте 👍, ❤️ и 🔥, мне это важно!

Навигация по постам:
#digest – регулярные подборки лучших материалов
#книги – рекомендации книг
#найм – все, связанное с подбором людей и собеседованиями
#развитие_себя – улучшение своих навыков
#люди – про все навыки, связанные с работой с людьми
#процессы – процессы разработки, управление сроками и скоупом
#доклады - доклады на различные темы
#собеседование - публичные мок-собеседования на iOS разработчика
👍207🔥2🤡2
iOS Такой 🍏 pinned «Привет! Меня зовут Даниил Димов. Я основатель комьюнити EasySwift, работаю в Online Premier iOS разработчиком. Я верю в то, что для нашего развития как мобильного разработчика, программиста, важно повышать насмотренность, расширять кругозор и усердно учиться.…»
Математические основы Auto Layout

Auto Layout — это система верстки. Прежде, чем углубиться в неё, поговорим о современной верстке вообще. Затем займемся Auto Layout — разберемся какую задачу он решает и как это делает. Рассмотрим особенности в имплементации Auto Layout в iOS, и попробуем выработать практические советы, которые могут помочь в работе с ним.

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

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

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

#digest
👍73🔥3🖕2
Разбираем ошибки начинающих iOS-разработчиков

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

План статьи, который стоит придерживаться:

1. Вёрстка
2. Использование опционалов
3. Императивный/деклоративный стиль
4. Нейминг, общая структура приложения.
5. Использования ARC в приложении.


#digest #развитие_себя
👍113🔥3👎2
Сеанс отладки iOS

Разработчики не идеальны. Даже лучшие разработчики в мире допускают ошибки при разработке приложений для iOS - это случается.

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

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

Предоставляю к прочтению хорошие статьи по отладке вашего приложения:

Cтатья к прочтению
Статья к прочтению
Видео к просмотру

#digest
🔥64👍2👎2
Что почитать начинающему iOS разработчику?

Язык Swift прост, понятен и отлично подойдет как новичкам, так и опытным программистам. Чтобы начать писать код, вам потребуются только эта книга, компьютер и желание учиться. Все базовые концепции программирования и основы синтаксиса объясняются доступным языком, поэтому если вы никогда раньше не занимались разработкой, то эта книга – отличный старт. Теория чередуется с практическими примерами и кодом – так вы сразу сможете связать абстрактные понятия с реальными ситуациями. В каждой главе вас ждут тесты и домашние задания, которые помогут закрепить материал.

#книги
👍125👎3🔥3
Как локализовать все ваши iOS приложения на 20 языков за 5 минут

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

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

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

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

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

Но мы бы не были разработчиками, если бы пытались всегда все автоматизировать. Автоматизированная локализация может быстро и эффективно переводить контент, снизить затраты, связанные с ручным переводом, например, наем профессиональных переводчиков или выделение внутренних ресурсов для этой задачи. Это особенно эффективно, если приложение создается одним разработчиком. Читать про установку и настройку в данной статье.
👍32👎2🔥1
iOS-разработка со SnapKit

SnapKit — это библиотека, содержащая синтаксический сахар и обертки для более удобной работы с классом NSLayoutConstraint, позволяющим настроить взаимное расположение объектов интерфейса. Первый релиз SnapKit случился ещё в далёком 2016 и создавался под Swift 2.3; последний релиз 5.6.0 вышел в апреле 2022 и умеет работать с Swift 5.6.

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

Статья к прочтению (рекомендую)
Статья к прочтению

#digest
👍82👎2🔥1
Вопросы на собеседование Senior iOS разработчик

Мы все знаем, что собеседование - сложный процесс. Итак, вы, вероятно, работаете полный рабочий день и каждый день решаете серьезные проблемы, выполняете регулярные задания, у вас ежедневные встречи, спринты или вы вовсе ищите впервые работу. То предлагаю, заглянуть в статью с нестандартными вопросами на позицию Senior iOS Dev.

1. Различие сильных и слабых ссылок в Objective-C.
2. Что такое покрытие кода?
3. Каковы различные состояния приложений в iOS?
4. В чем разница между Android и iOS?
5. Что такое глубокие ссылки в iOS?
6. В чем разница между потоком и процессом?
7. Что такое шаблоны проектирования?
8. Насколько хорошо вы понимаете назначение и сохранение ключевых слов?
9. Чем идентификатор пакета отличается от идентификатора приложения?
10. Какие типы данных существуют в Objective-C?
11. Каковы особенности языка программирования Swift?
12. Что такое UUID?
13. Что такое
@synthesize в Objective C?
14. Что вы понимаете в KVC и KVO в Swift?


Являетесь ли вы профессиональным разработчиком или новичком, не стесняйтесь ознакомиться с вопросами и ответами на интервью для iOS в данной статье
👍7👎3❤‍🔥2🔥21
iOS Responder Chain

Экземпляры UIResponder - это объекты, которые могут обрабатывать и реагировать на произвольные события. Многие вещи в iOS являются UIResponder, включая UIView, UIViewController, UIWindow, UIApplication и UIApplicationDelegate.

В iOS Responder Chain — это основа для всего, что касается событий (touch, motion).

Всем процессом iOS Responder Chain занимается UIKit, который динамично работает со связным списком UIResponder-ов. Не взирая на то, что iOS Responder Chain полностью контролируется UIKit-ом, его можно использовать для решения проблемы делегирования/общения. UIResponder действия похоже на одноразовые NotificationCenter.default.post.

📝Статья для прочтения
📝 Статья для прочтения
👍72👎2🔥1👏1
Как работает массив в Swift

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

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

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

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

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

Вывод:
1. Массив имеет фиксированный размер.
2. Рандомный доступ О(1).
3. Вставка/ удаление – О(n).
4. Массивы могут сокращаться и расти О(n).
5. Swift проделывает большую работу за нас при создании массива.

#digest
👍93👎2🔥1
Ребята, всем привет!

В это воскресенье у нас первое интервью на канале. Гость - Роман Галь. Head of Mobile TradingView

Сделаем круглый стол, и разберем следующие темы:

Как устроиться на работу джуну
• Как преподнести своё решение тимлиду и коллегам
• Как совмещать работу, учёбу и отдых
• Как навести порядок в процессах в команде

В беседе примут участие:

1) Сергей Ирбеткин, iOS Lead РНКБ Банка.

2) Максим Анохин, Senior iOS Санлайт.

3) ну и я тоже поучаствую 🙂

Встречаемся в 17-00 по Москве в воскресенье 26 марта по ссылке.
👍13🔥63🤡2
За год в российском IT стало на пятую часть меньше вакансий, а количество резюме выросло более чем на треть

По данным Исследовательского центра SuperJob:

1. Зарплаты в IT в Москве за год выросли на 11,8%. В прошлом году рост был рекорд роста в 21.1%.

2.  В России за год вакансий стало меньше на 19%. Количество резюме, наоборот, увеличилось на 38%.

3. В Москве за год вакансий стало меньше на 25%, а количество резюме увеличилось на 47%.

И что: IT-сфера сегодня имеет высокий порог вхождения, в приоритете — практический опыт. Зарплаты middle- и senior-разработчиков продолжают расти. При этом снизились зарплатные предложения для junior-специалистов.

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

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

#digest #люди
🔥8👍2👎2👏1
Bottom sheet: Custom transitioning

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

Эта статья подробно описывает работу кастомного transitioning delegate для отображения любого контента на экране в виде bottom sheet. Такое отображение подразумевает, что контроллер на экране занимает по высоте только область необходимую и достаточную, чтобы уместить весь содержащийся в нём контент.

#digest
👍17🔥32💩2
Я выбрал язык программирования с помощью икигаи, коучей и рефлексии — и это сработало

Для ребят, которые только вкатываются или планируют изучать программирование, обязательно встает вопрос о том, какой язык учить? С чего мне начать? Покупать ли курсы?

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

План статьи:
- Просто выбирать язык бесполезно — нужно искать направление
- Метод психолога сократил 9 направлений до 3
- 4 вопроса, которые помогли мне выбрать одно направление


В соотвествии с выбранным направлением, пониманием чем вы хотите заниматься, стоит выбрать язык программирования. Прочтение данной статьи поможет Вам сократить количество направлений до 3–4. После по каждому направлению Вы ответите на четыре вопроса: то ли это направление, которое я люблю; востребовано ли оно в мире, смогу ли я на этом деле заработать и умею ли я этим заниматься.

#люди #развития_себя
👍122👎2🔥2👏1
Введение в Git Merge и Git Rebase: зачем и когда их использовать

Git Merge и Git Rebase преследуют одну и ту же цель. Они предназначены для интеграции изменений из одной ветки в другую. Хотя конечная цель одинаковая, принципы работы разные.

Некоторые считают, что вы всегда должны использовать Rebase, другие предпочитают Merge. В этом есть свои плюсы и минусы.

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

Плюсы:
- простота
- сохраняет полную историю и хронологический порядок
- поддерживает контекст ветки


Минусы:
- история коммитов может быть заполнена (загрязнена) множеством коммитов;
- отладка с использованием git bisect может стать сложнее.


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

Плюсы:
- Упрощает потенциально сложную историю
- Упрощение манипуляций с единственным коммитом
- Избежание слияния коммитов в занятых репозиториях и ветках
- Очищает промежуточные коммиты, делая их одним коммитом, что полезно для DevOps команд



Минусы:
- Сжатие фич до нескольких коммитов может скрыть контекст
- Перемещение публичных репозиториев может быть опасным при работе в команде
- Появляется больше работы
- Для восстановления с удаленными ветками требуется принудительный пуш. Это приводит к обновлению всех веток, имеющих одно и то же имя, как локально, так и удаленно, и это ужасно.


#digest
👍16👎21🔥1
Ребята, всем привет!

В это воскресенье у нас очередное интервью на канале. Гость - Сергей Гнатюк. iOS Developer, основатель Питерского Coffee&Code, а также популяризатор комьюнити.

Мы с ним хотим пообщаться и поспрашивать его за:

• iOS Разработку, учебу и развитие
• Что такое Coffee&Code и будущее сообщества
• Текущее положение на рынке, и что если не iOS.

В беседе примут участие:

1) Сергей Ирбеткин, iOS Lead РНКБ Банка.

2) Максим Анохин, Senior iOS Санлайт.

3) И конечно же я 🙂

Встречаемся в 18-00 по Москве в воскресенье 2 апреля по ссылке.

#интервью #люди
👍14🔥53🤡2
Доступный MVVM на хакнутых экстеншенах

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

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

#digest
👍7🥴5👎21🔥1
Шаблон координатора с TabBar контроллером

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

В данной статье автор показывает как можно это реализовать, используя наиболее распространенные потоки: поток входа и основной поток(который включает TabBar контроллер). Используя координатор, мы можем определять потоки приложений и управлять навигацией между ViewController. Читать и смотреть код, в данной статье

#digest
👍162🥴2🔥1
Как написать свой первый модульный тест

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

И всё же, зачем нужны тесты?

Опишу самые, на мой взгляд, важные причины:

– при написании тестов вы продумываете все возможные варианты и ситуации, которые могут произойти в приложении, тем самым тестируете все эти подходы и исключаете возможные ошибки на «проде». Как простой пример: функция, выполняющая математическую операцию, должна выдавать определённый результат, но если посчитать руками, то вы обнаруживаете разницу, от которой можно обезопасится тестами

– в момент написания нового функционала (либо вы вернулись к проекту через длительный промежуток времени) проще всего запустить тесты и убедиться в том, что старый функционал по прежнему отрабатывает корректно

– ну и конечно, это экономия времени в будущем, особенно если ваш проект не маленький, а амбициозный и с долгосрочными планами


📖 В этой статье объясняется, что для написание тестов необходимо сделать.

#digest
👍6🔥2🤮21