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
Как работает массив в 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
Ребята, всем привет! 😊

В это воскресенье у нас новое интервью на канале. Гость - Станислав Сидорюк СTO at Drogerie retail. Это будет первое интервью на ютубе с СТО(это не точно😅)

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

• Кто же такой СТО и какую роль в разработке он выполняет?
• Что нужно, чтобы стать СТО?
• Про командообразование, мотивацию и процессы.


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

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

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

3) Даниил Димов, iOS Dev at Улыбка Радуги.

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

#интервью #люди
👍14🔥4👎2👏21🥰1
Практический пример создания View-компонента на SwiftUI

В этой статье пошаговое руководство как создать собственный Custom View для городов, используя Sruct, Computed Property и несколько функций, чтобы рассчитать количество лайков и поездок. Вы можете адаптировать код по себя, и попробовать видоизменить его.

#digest
10👍6💩3🔥1
Cocoapods, Carthage, SPM: как выбрать менеджер зависимостей в iOS

Senior iOS-разработчик red_mad_robot Аня Кочешкова рассказала, чем отличаются три менеджера зависимостей, в каких случаях и для каких задач подойдёт тот или иной. Аня подробно объяснила, что такое семантическое версионирование, как устроены модули кода и в чём разница между динамическими и статическими библиотеками. Материал будет полезен джунам, которые только начали погружаться в разработку.

Head of Android red_mad_robot Central Asia Влад Бауэр поделился опытом, как решил нехватку iOS-разработчиков на одном из внутренних проектов. Он придумал решение: пошарил часть кода и перенёс его в Kotlin Multiplatform Mobile. Спойлер: у Влада получилось, и теперь он рассказывает о нюансах, с которыми ему пришлось столкнуться.

Источник канал

#digest #люди
👍7🔥32👎2
Внимание! Доклад по Async/await

В это воскресенье я проведу доклад на тему Async/await

В докладе будет:

• Реализация Async/await на реальных проектах.
• Разберем все особенности данной фичи.
• Какие подводные камни мы можем ожидать, используя Async/await.


И в конце позадаем вопросы...😊

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

#digest #доклад
👍29🔥76👎2
SwiftFormat: форматирование кода Swift

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

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

#digest
👍12🔥5👎2👏2
Покупки в приложении в iOS

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

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

Внедрение IAP требует, чтобы приложение использовало StoreKit API на устройстве. StoreKit управляет всеми коммуникациями с серверами Apple iTunes для получения информации о продукте и выполнения транзакций. Профиль подготовки должен быть настроен для IAP, а информация о продукте должна быть введена в App Store Connect.

#digest
👍144👎2🔥1
Цикломатическая сложность в Swift

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

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

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

Чтобы уменьшить цикломатическую сложность в Swift, разработчики могут использовать несколько приемов. Один из распространенных методов — упрощение потока управления путем использования защитных операторов вместо вложенных операторов if. Это может сделать код более читабельным и сократить количество ветвлений в коде.

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

#digest
👍11🤯3👎2🔥21
Swift iOS подготовка к собеседованиям

Большой цикл статей для подготовки к собесам по iOS(общие вопросы, Swift, SwiftUi, архитектура, design pattern, многопоточность, http/https, структуры данных, база данных и тд).

• Part 1 – Language features
• Part 2 – Auto layout & UIKit
• Part 3 – Threading & concurrency
• Part 4 – Memory management
• Part 5 – Architecture and design pattern
• Part 6 Top 100+ iOS Interview Questions And Answers in 2023
• IOS Developer – Bonus Interview Questions

#digest #собеседования
👍28🔥73🤮2
📷 Пишем камеру на AVFoundation

В это воскресенье Эмиль Имамов, iOS разработчик продукта "3D Платформа" поведает нас в мир библиотеки AVFoundation и расскажет, как с ним работать на реальных проектах.

Так же у Эмиля написана статья на habr. Ознакомиться перед докладом можно по ссылке.

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

Встречаемся завтра, в 18-00 по Москве.

#digest #доклад
👍17🔥4🤮21