Акторы в Swift (Actors in swift)
Что такое актор как сущность? Это не класс и не структура. Вот некоторые характеристики актора:
- Он является ссылочным типом.
- Он может иметь свойства, методы, инициализаторы и деинициализаторы.
- Он не поддерживает наследование.
- Его общедоступные свойства и методы не могут быть получены прямым доступом извне; мы должны использовать await и только в асинхронном контексте.
- Он может выполнять только один метод одновременно, независимо от того, как мы обращаемся к актору.
Пример, как работают акторы в Swift можно прочитать подробно в данной статье. Автор делится примерами реализаций, и как с ними работать в реальных проектах.
#digest #actor
Что такое актор как сущность? Это не класс и не структура. Вот некоторые характеристики актора:
- Он является ссылочным типом.
- Он может иметь свойства, методы, инициализаторы и деинициализаторы.
- Он не поддерживает наследование.
- Его общедоступные свойства и методы не могут быть получены прямым доступом извне; мы должны использовать await и только в асинхронном контексте.
- Он может выполнять только один метод одновременно, независимо от того, как мы обращаемся к актору.
Пример, как работают акторы в Swift можно прочитать подробно в данной статье. Автор делится примерами реализаций, и как с ними работать в реальных проектах.
#digest #actor
❤12👍3🔥3💩2
This media is not supported in your browser
VIEW IN TELEGRAM
Hero - это библиотека для создания переходов между контроллерами просмотра iOS.
Она предоставляет декларативный слой поверх громоздких API-интерфейсов UIKit для перехода, что делает пользовательские переходы легкой задачей для разработчиков.
На уровне контроллера просмотра Hero предоставляет несколько переходов по шаблону, которые вы можете настроить с помощью heroModalAnimationType, heroNavigationAnimationType и heroTabBarAnimationType. Они могут быть использованы в качестве основы ваших пользовательских переходов. Объедините с heroID & heroModifiers, чтобы создавать свои собственные уникальные переходы.
Продолжительность автоматически определяется изменением расстояния и размера, что избавляет вас от лишних хлопот и обеспечивает последовательную и восхитительную анимацию.
#digest #библиотека
Она предоставляет декларативный слой поверх громоздких API-интерфейсов UIKit для перехода, что делает пользовательские переходы легкой задачей для разработчиков.
На уровне контроллера просмотра Hero предоставляет несколько переходов по шаблону, которые вы можете настроить с помощью heroModalAnimationType, heroNavigationAnimationType и heroTabBarAnimationType. Они могут быть использованы в качестве основы ваших пользовательских переходов. Объедините с heroID & heroModifiers, чтобы создавать свои собственные уникальные переходы.
Продолжительность автоматически определяется изменением расстояния и размера, что избавляет вас от лишних хлопот и обеспечивает последовательную и восхитительную анимацию.
#digest #библиотека
👍15❤4🔥2💩1
Всем привет! Возвращаемся к Вам после выходных с новой прямой трансляцией!
В это воскресенье у нас круглый стол на тему "Chat GPT и Нейронные сети". Поговорим про полезность нейронок, ответим на вопросы и попытаемся порассуждать что будет дальше. А главным гостем будет - Senior JS Разработчик Илья Юркин
По традиции за круглым столом вместе с нашим гостем будет следующий состав.
Сергей Ирбеткин, iOS Lead РНКБ Банка.
Максим Анохин, Senior iOS Санлайт.
Даниил Димов, iOS Dev at Улыбка Радуги.
Если ты хочешь чтобы ответили на твой вопрос - пиши мне в лс @new_repository 🙂
Встречаемся в 18-00 по Москве в воскресенье 14 мая по ссылке.
#diges #круглыйстол
В это воскресенье у нас круглый стол на тему "Chat GPT и Нейронные сети". Поговорим про полезность нейронок, ответим на вопросы и попытаемся порассуждать что будет дальше. А главным гостем будет - Senior JS Разработчик Илья Юркин
По традиции за круглым столом вместе с нашим гостем будет следующий состав.
Сергей Ирбеткин, iOS Lead РНКБ Банка.
Максим Анохин, Senior iOS Санлайт.
Даниил Димов, iOS Dev at Улыбка Радуги.
Если ты хочешь чтобы ответили на твой вопрос - пиши мне в лс @new_repository 🙂
Встречаемся в 18-00 по Москве в воскресенье 14 мая по ссылке.
#diges #круглыйстол
👍13❤6🔥4🤡2
Реализуем Универсальные ссылки на iOS
Универсальные ссылки (Universal Links) позволяют вам ссылаться на содержимое внутри вашего приложения, когда пользователь открывает определенный URL. По умолчанию веб-страницы открываются в браузере приложения, но вы можете настроить определенные пути, чтобы они открывались в вашем приложении, если оно установлено у пользователя
Разница между глубокими ссылками и универсальными ссылками
Прежде чем мы погрузимся в Универсальные ссылки, необходимо понять разницу с глубокими ссылками. Разницу лучше всего объяснить, взглянув на формат URL:
Глубокая ссылка: recipeapp://open-recipe?name=recipename
Универсальная ссылка: www.recipes.com/recipename
Глубокая ссылка использует пользовательскую схему с путем, определяющим действие для выполнения. Универсальные ссылки — это веб-адреса, которые открывают веб-страницу, если приложение не установлено. Другими словами: глубокие ссылки работают только в том случае, если приложение существует, а универсальные ссылки, если приложения нет, возвращаются к веб-сайту.
Для пользователей лучше использовать универсальные ссылки, чтобы гарантировать, что они найдут то, что ищут. Если вы не можете предоставить веб-вариант контента, на который вы ссылаетесь, вы можете рассмотреть возможность создания App Clip и повторного использования кода вашего основного приложения.
Вы можете использовать универсальные ссылки для создания интегрированного пользовательского опыта, открывая веб-адреса непосредственно в вашем мобильном приложении. В отличие от глубоких ссылок, пользователи будут перенаправлены на веб-страницу, если приложение не установлено. Entitlement внутри вашего приложения в сочетании с файлом, связанным с доменом, обеспечивает связь между вашим сайтом и приложением. Более подробно прочитать можно в данной статье. Автор рассказывает цель применения, код написания. Берите, пользуйтесь ;)
#digest #Универсальныессылки
Универсальные ссылки (Universal Links) позволяют вам ссылаться на содержимое внутри вашего приложения, когда пользователь открывает определенный URL. По умолчанию веб-страницы открываются в браузере приложения, но вы можете настроить определенные пути, чтобы они открывались в вашем приложении, если оно установлено у пользователя
Разница между глубокими ссылками и универсальными ссылками
Прежде чем мы погрузимся в Универсальные ссылки, необходимо понять разницу с глубокими ссылками. Разницу лучше всего объяснить, взглянув на формат URL:
Глубокая ссылка: recipeapp://open-recipe?name=recipename
Универсальная ссылка: www.recipes.com/recipename
Глубокая ссылка использует пользовательскую схему с путем, определяющим действие для выполнения. Универсальные ссылки — это веб-адреса, которые открывают веб-страницу, если приложение не установлено. Другими словами: глубокие ссылки работают только в том случае, если приложение существует, а универсальные ссылки, если приложения нет, возвращаются к веб-сайту.
Для пользователей лучше использовать универсальные ссылки, чтобы гарантировать, что они найдут то, что ищут. Если вы не можете предоставить веб-вариант контента, на который вы ссылаетесь, вы можете рассмотреть возможность создания App Clip и повторного использования кода вашего основного приложения.
Вы можете использовать универсальные ссылки для создания интегрированного пользовательского опыта, открывая веб-адреса непосредственно в вашем мобильном приложении. В отличие от глубоких ссылок, пользователи будут перенаправлены на веб-страницу, если приложение не установлено. Entitlement внутри вашего приложения в сочетании с файлом, связанным с доменом, обеспечивает связь между вашим сайтом и приложением. Более подробно прочитать можно в данной статье. Автор рассказывает цель применения, код написания. Берите, пользуйтесь ;)
#digest #Универсальныессылки
👍12❤2🔥2🤮2
Собеседование iOS разработчика: вопросы и задания
В этой статье мы собрали вопросы и задания, которые часто встречаются на собеседованиях iOS разработчиков.
- Управление памятью
- Autorelease Pool
- Blocks and Closures
- Event Handling & Responder Chain
- Singletons
- Dependency Injection
- Многопоточность
- Автолояут
#digest #собеседование
В этой статье мы собрали вопросы и задания, которые часто встречаются на собеседованиях iOS разработчиков.
- Управление памятью
- Autorelease Pool
- Blocks and Closures
- Event Handling & Responder Chain
- Singletons
- Dependency Injection
- Многопоточность
- Автолояут
#digest #собеседование
🔥21👍3❤2👏1🤮1
Сетевые запросы и REST API в iOS с использованием Swift (протокол-ориентированный подход)
Сетевое взаимодействие является обязательным требованием для большинства современных приложений iOS.
Выполнение сетевых запросов в приложении iOS не сводится просто к добавлению некоторого дополнительного кода. Существует множество движущихся частей, которые необходимо понимать при подключении к удаленной веб-службе в iOS. В этой статье предлагается к рассмотрению каждый аспект, один за другим.
Поймете, как работает удаленная веб-служба.
Поймете, как работает протокол HTTP.
Поймете, как использовать систему загрузки URL в iOS SDK.
Выполните сетевой запрос, чтобы получить необходимые данные в вашем приложении.
Поймете как обрабатывают асинхронный характер сетевых вызовов в Swift.
Поймете, используйте полученные данные в своем приложени
А так же все про архитектуру REST. Очень понятная, доступная и большая статья для тех, кто только начинает и для всех, кто хочет освежить свои знания.
#digest #сетевыезапросы
Сетевое взаимодействие является обязательным требованием для большинства современных приложений iOS.
Выполнение сетевых запросов в приложении iOS не сводится просто к добавлению некоторого дополнительного кода. Существует множество движущихся частей, которые необходимо понимать при подключении к удаленной веб-службе в iOS. В этой статье предлагается к рассмотрению каждый аспект, один за другим.
Поймете, как работает удаленная веб-служба.
Поймете, как работает протокол HTTP.
Поймете, как использовать систему загрузки URL в iOS SDK.
Выполните сетевой запрос, чтобы получить необходимые данные в вашем приложении.
Поймете как обрабатывают асинхронный характер сетевых вызовов в Swift.
Поймете, используйте полученные данные в своем приложени
А так же все про архитектуру REST. Очень понятная, доступная и большая статья для тех, кто только начинает и для всех, кто хочет освежить свои знания.
#digest #сетевыезапросы
👍12🔥3🤮2❤1🍓1
Проектируем уведомления в iOS: 104 гайдлайна
В этой статье разбираются уведомления в iOS на составные части и обсуждаются моменты, которые стоит учитывать, проектируя каждую из них.
Структура статьи:
- Запрос доступа
- Заголовок уведомления
- Текст уведомления
- Использование emoji
- Медиа-контент
- Кнопки действия
- Бейдж в иконке приложения
- Время и частота отправки
- Применение в e-commerce
Рекомендую данную статью👍
#digest #уведомления
В этой статье разбираются уведомления в iOS на составные части и обсуждаются моменты, которые стоит учитывать, проектируя каждую из них.
Структура статьи:
- Запрос доступа
- Заголовок уведомления
- Текст уведомления
- Использование emoji
- Медиа-контент
- Кнопки действия
- Бейдж в иконке приложения
- Время и частота отправки
- Применение в e-commerce
Рекомендую данную статью👍
#digest #уведомления
👍14❤3🔥1👏1🤔1🤮1
Всем привет! Возвращаемся к Вам с новой прямой трансляцией!
В это воскресенье у нас интерессный гость - Даниил Стрижов. Тема доклада " Собеседование в FAANG (личный опыт Google Apple Amazon Pinterest Atlassian ) сравнение с российским рынком. Послушаем маленький доклад, потом поговорим про зарубежный рынок, сравним с российским рынком.
На докладе будут присутствовать и задавать вопросы:
Сергей Ирбеткин, iOS Lead РНКБ Банка.
Максим Анохин, Senior iOS
Кирилл Геллерт, Senior iOS
Если ты хочешь чтобы ответили на твой вопрос - пиши мне в лс @new_repository 🙂
Встречаемся в 18-00 по Москве в воскресенье 28 мая по ссылке.
#digest #доклад
В это воскресенье у нас интерессный гость - Даниил Стрижов. Тема доклада " Собеседование в FAANG (личный опыт Google Apple Amazon Pinterest Atlassian ) сравнение с российским рынком. Послушаем маленький доклад, потом поговорим про зарубежный рынок, сравним с российским рынком.
На докладе будут присутствовать и задавать вопросы:
Сергей Ирбеткин, iOS Lead РНКБ Банка.
Максим Анохин, Senior iOS
Кирилл Геллерт, Senior iOS
Если ты хочешь чтобы ответили на твой вопрос - пиши мне в лс @new_repository 🙂
Встречаемся в 18-00 по Москве в воскресенье 28 мая по ссылке.
#digest #доклад
👍15🔥4❤1💩1
Короче, Proxyman: краткий обзор самого яблочного сниффера
В данной статье на реальных примерах, рассмотрятся основные и самые ходовые функции сниффера, которые используют QA и разработчики на почти ежедневной основе. Поехали!
Вкратце напомню, что сниффер трафика — это инструмент для анализа трафика, который позволяет отслеживать, записывать и анализировать сетевые запросы между устройствами и интернетом. Большинство приложений использует огромное количество эндпоинтов для получения и отправки информации. Инструменты для тестирования сетевых запросов, такие как Charles Proxy, Proxyman и другие, позволяют разработчикам и тестировщикам более эффективно выполнять тестирование мобильных приложений и выявлять потенциальные проблемы и ошибки.
Каждый действующий разработчик когда-либо касался этого инструмента, так как мы проверяем статус код запроса, данные которые нам приходят, данные которые мы отправляем, количество времени за которое приходит/отправляется запрос. И если вы только устроились на работу, то советую посмотреть данную статью и ознакомиться с этим инструментом.
#digest #proxyman
В данной статье на реальных примерах, рассмотрятся основные и самые ходовые функции сниффера, которые используют QA и разработчики на почти ежедневной основе. Поехали!
Вкратце напомню, что сниффер трафика — это инструмент для анализа трафика, который позволяет отслеживать, записывать и анализировать сетевые запросы между устройствами и интернетом. Большинство приложений использует огромное количество эндпоинтов для получения и отправки информации. Инструменты для тестирования сетевых запросов, такие как Charles Proxy, Proxyman и другие, позволяют разработчикам и тестировщикам более эффективно выполнять тестирование мобильных приложений и выявлять потенциальные проблемы и ошибки.
Каждый действующий разработчик когда-либо касался этого инструмента, так как мы проверяем статус код запроса, данные которые нам приходят, данные которые мы отправляем, количество времени за которое приходит/отправляется запрос. И если вы только устроились на работу, то советую посмотреть данную статью и ознакомиться с этим инструментом.
#digest #proxyman
👍6❤4🔥2💩1💊1
Async/await против GCD
Task в Swift — это новая асинхронная конструкция, которая была добавлена в Swift 5.5. Task — это единица асинхронной работы. Когда вы создаете экземпляр Task, вы предоставляете замыкание содержащее какую-то работу, которую эта задача должна выполнить. Только код, выполняющийся как часть задачи, может взаимодействовать с этой задачей, а вот чтобы взаимодействовать с текущей задачей, вы вызываете один из статических методов Task. Кроме того, Task также предоставляет дополнительные возможности, такие как отмена задачи, проверка статуса выполнения и управление приоритетом выполнения.
Каждая задача в группе задач имеет одну и ту же родительскую задачу, и у каждой задачи могут быть дочерние задачи. Из-за явных отношений между задачами и группами задач такой подход называется структурированным параллелизмом
Основываясь на вышеприведенном статье, в которой приведены множество примеров реализации GCD и Async/await и их различия, можно с уверенностью заявить, что использование async/await сильно упрощает разработку, а также делает код более простым и читаемым, что видно невооруженным глазом и несомненно оказывает самый благоприятный эффект на долгосрочную судьбу проекта.
#digest #asyncawait #gcd
Task в Swift — это новая асинхронная конструкция, которая была добавлена в Swift 5.5. Task — это единица асинхронной работы. Когда вы создаете экземпляр Task, вы предоставляете замыкание содержащее какую-то работу, которую эта задача должна выполнить. Только код, выполняющийся как часть задачи, может взаимодействовать с этой задачей, а вот чтобы взаимодействовать с текущей задачей, вы вызываете один из статических методов Task. Кроме того, Task также предоставляет дополнительные возможности, такие как отмена задачи, проверка статуса выполнения и управление приоритетом выполнения.
Каждая задача в группе задач имеет одну и ту же родительскую задачу, и у каждой задачи могут быть дочерние задачи. Из-за явных отношений между задачами и группами задач такой подход называется структурированным параллелизмом
Основываясь на вышеприведенном статье, в которой приведены множество примеров реализации GCD и Async/await и их различия, можно с уверенностью заявить, что использование async/await сильно упрощает разработку, а также делает код более простым и читаемым, что видно невооруженным глазом и несомненно оказывает самый благоприятный эффект на долгосрочную судьбу проекта.
#digest #asyncawait #gcd
👍10❤5💩2🔥1
Лучший способ структурировать iOS-проект
1. Модуль
Хорошая практика, это когда в первую очередь держите вместе файлы, которые связаны друг с другом или имеют что-то общее. Допустим, у вас есть простой MVVM-модуль, который содержит контроллер представления, представление, модель представления и несколько дополнительных вложенных представлений. Все эти файлы должны быть помещены в одну папку. Это потому, что все они связаны друг с другом, потому что все они являются частями одного модуля.
У нас есть папка для каждого модуля, эти папки содержат View Controller, View Model и модель для конкретного модуля. Затем все модули группируются вместе в папке /Modules. При такой организации мы знаем, что все модули находятся в папке /Modules, а все файлы, относящиеся к конкретному модулю, находятся в папке с названием модуля, например, /SomeModule.
2. Переиспользуемые представления
У нас может быть 2 типа многоразовых представлений. Представления, которые мы собираемся использовать во всем приложении, например, кнопки и текстовые поля. И представления, которые используются только в одном конкретном модуле, например, вы решили создать отдельное представление заголовка для одного из ваших модулей.
В первом случае все эти представления должны находиться в одной папке, например, /UIComponents. И внутри этой папки вы можете сгруппировать их в зависимости от их суперклассов, например, /Buttons и /Textfields.
3. Сервисы
Вы помещаете все службы в папку /Services или /Managers. А внутри корневой папки сервисов вы создаете новую папку для каждой службы, которая у вас есть. Вы создаете папку для каждого сервиса, поскольку у вашего сервиса может быть еще несколько файлов, связанных с ним.
4. Прочие файлы
Внутри папки /Common вы создаете другие папки для имеющихся у вас файлов, например, /Resources, /Extensions, /JsonFiles и так далее.
#digest #структурапроекта
1. Модуль
Хорошая практика, это когда в первую очередь держите вместе файлы, которые связаны друг с другом или имеют что-то общее. Допустим, у вас есть простой MVVM-модуль, который содержит контроллер представления, представление, модель представления и несколько дополнительных вложенных представлений. Все эти файлы должны быть помещены в одну папку. Это потому, что все они связаны друг с другом, потому что все они являются частями одного модуля.
У нас есть папка для каждого модуля, эти папки содержат View Controller, View Model и модель для конкретного модуля. Затем все модули группируются вместе в папке /Modules. При такой организации мы знаем, что все модули находятся в папке /Modules, а все файлы, относящиеся к конкретному модулю, находятся в папке с названием модуля, например, /SomeModule.
2. Переиспользуемые представления
У нас может быть 2 типа многоразовых представлений. Представления, которые мы собираемся использовать во всем приложении, например, кнопки и текстовые поля. И представления, которые используются только в одном конкретном модуле, например, вы решили создать отдельное представление заголовка для одного из ваших модулей.
В первом случае все эти представления должны находиться в одной папке, например, /UIComponents. И внутри этой папки вы можете сгруппировать их в зависимости от их суперклассов, например, /Buttons и /Textfields.
3. Сервисы
Вы помещаете все службы в папку /Services или /Managers. А внутри корневой папки сервисов вы создаете новую папку для каждой службы, которая у вас есть. Вы создаете папку для каждого сервиса, поскольку у вашего сервиса может быть еще несколько файлов, связанных с ним.
4. Прочие файлы
Внутри папки /Common вы создаете другие папки для имеющихся у вас файлов, например, /Resources, /Extensions, /JsonFiles и так далее.
#digest #структурапроекта
👍21❤3❤🔥2🔥2🤡2🙉1
Как масштабировать все элементы экрана в SwiftU
Возможно, вы сталкивались с тем, что SwiftUI не очень дружелюбно относится к разного рода растягиваниям и сдвигам на экране. Чтобы разобраться с этой проблемой, сначала необходимо понять, как происходит масштабирование в SwiftUI.
При использовании функции frame() мы создаем строгое пространство для нашего объекта, которое не зависит от других объектов. Когда мы хотим разместить текстовый элемент от самого края экрана, это может вызвать множество проблем с адаптацией на других экранах.
А на самом деле все просто - нужно просто умножить параметр на коэффициент экрана)
Возьмем изначальные размеры нашего фрейма и умножим на коэффициент экрана. То есть мы берем размер экрана, на котором запускаем программу, и нужный нам размер экрана из Figma и делим друг на друга. Как итог - получаем коэффициент масштабирования
#digest #swiftui
Возможно, вы сталкивались с тем, что SwiftUI не очень дружелюбно относится к разного рода растягиваниям и сдвигам на экране. Чтобы разобраться с этой проблемой, сначала необходимо понять, как происходит масштабирование в SwiftUI.
При использовании функции frame() мы создаем строгое пространство для нашего объекта, которое не зависит от других объектов. Когда мы хотим разместить текстовый элемент от самого края экрана, это может вызвать множество проблем с адаптацией на других экранах.
А на самом деле все просто - нужно просто умножить параметр на коэффициент экрана)
Возьмем изначальные размеры нашего фрейма и умножим на коэффициент экрана. То есть мы берем размер экрана, на котором запускаем программу, и нужный нам размер экрана из Figma и делим друг на друга. Как итог - получаем коэффициент масштабирования
#digest #swiftui
👍11❤3🔥3💩2
Ориентированный на продукт инженер-программист
Ориентированные на продукт инженеры - разработчики, проявляющие большой интерес к самому продукту. Они хотят понимать, почему принимаются решения, как люди используют продукт, и любят участвовать в принятии решений по продукту. Из них, вероятно, вышел бы хороший менеджер по продукту, если бы они когда-нибудь решили отказаться от радости разработки.
Каковы ключевые черты инженеров, ориентированных на продукт, и как вы можете работать над тем, чтобы стать более ориентированными на продукт?
1. Активно использовать идеи / мнения о продукте
2. Интерес к бизнесу, поведению пользователей и данным по этому
3. Любопытство и острый интерес к вопросу "почему?"
4. Сильные коммуникаторы и отличные отношения с неинженерами
5. Заранее предлагать компромиссы между продуктом и разработкой
6. Прагматичная обработка крайних случаев
7. Быстрые циклы проверки продукта
8. Владение сквозными функциями продукта
9. Сильное представление о продукте благодаря повторяющимся циклам обучения
Советы, как стать более ориентированным на продукт инженером.
1. Поймите, как и почему ваша компания успешна
2. Постройте прочные отношения со своим менеджером по продукту.
3. Занимайтесь исследованиями пользователей, поддержкой клиентов
4. Представьте на стол хорошо обоснованные предложения по продуктам
5. Предлагайте компромиссы между продуктом и разработкой
6. Регулярно запрашивайте отзывы у вашего менеджера по продукт
#digest #развитие
Ориентированные на продукт инженеры - разработчики, проявляющие большой интерес к самому продукту. Они хотят понимать, почему принимаются решения, как люди используют продукт, и любят участвовать в принятии решений по продукту. Из них, вероятно, вышел бы хороший менеджер по продукту, если бы они когда-нибудь решили отказаться от радости разработки.
Каковы ключевые черты инженеров, ориентированных на продукт, и как вы можете работать над тем, чтобы стать более ориентированными на продукт?
1. Активно использовать идеи / мнения о продукте
2. Интерес к бизнесу, поведению пользователей и данным по этому
3. Любопытство и острый интерес к вопросу "почему?"
4. Сильные коммуникаторы и отличные отношения с неинженерами
5. Заранее предлагать компромиссы между продуктом и разработкой
6. Прагматичная обработка крайних случаев
7. Быстрые циклы проверки продукта
8. Владение сквозными функциями продукта
9. Сильное представление о продукте благодаря повторяющимся циклам обучения
Советы, как стать более ориентированным на продукт инженером.
1. Поймите, как и почему ваша компания успешна
2. Постройте прочные отношения со своим менеджером по продукту.
3. Занимайтесь исследованиями пользователей, поддержкой клиентов
4. Представьте на стол хорошо обоснованные предложения по продуктам
5. Предлагайте компромиссы между продуктом и разработкой
6. Регулярно запрашивайте отзывы у вашего менеджера по продукт
#digest #развитие
👍8❤3🔥2🤮2
Queryable: асинхронный показ View в SwiftUI
Queryable — библиотека асинхронных представления View в SwiftUI. Это property wrapper, который может инициировать представление View и ожидать завершения от асинхронной функции, при этом полностью скрывая обработку состояния от самого представления.
Это не только освобождает View от любого вида контекста (оно просто предоставляет ответ на запрос), но вы также можете передать buttonConfirmation вниз по иерархии представлений, чтобы любое дочернее представление могло удобно вызвать подтверждение без необходимости иметь дело с фактически отображаемым пользовательским интерфейсом. Queryable работает с оповещениями, диалогами подтверждения, sheets, fullScreenCover и кастомными оверлеями.
Queryable на GitHub: https://github.com/SwiftedMind/Queryable
Платформа: iOS
#digest #библиотека
Queryable — библиотека асинхронных представления View в SwiftUI. Это property wrapper, который может инициировать представление View и ожидать завершения от асинхронной функции, при этом полностью скрывая обработку состояния от самого представления.
Это не только освобождает View от любого вида контекста (оно просто предоставляет ответ на запрос), но вы также можете передать buttonConfirmation вниз по иерархии представлений, чтобы любое дочернее представление могло удобно вызвать подтверждение без необходимости иметь дело с фактически отображаемым пользовательским интерфейсом. Queryable работает с оповещениями, диалогами подтверждения, sheets, fullScreenCover и кастомными оверлеями.
Queryable на GitHub: https://github.com/SwiftedMind/Queryable
Платформа: iOS
#digest #библиотека
👍8🔥2❤1🤡1
UICollectionViewCompositionalLayout
В этой статье хочется познакомиться к UICollectionViewCompositionalLayout и с его помощью создать UICollectionView с прокручивающимися секциями, а затем еще немного более их кастомизировать, чтобы показать как просто с помощью UICollectionViewCompositionalLayout мы можем создавать UICollectionView, которые выглядят именно так как нам необходимо.
Compositional layouts - это декларативный вид API, который позволяет нам создавать большие макеты путем объединения небольших групп макетов. Compositional layouts имеют иерархию, состоящую из Item, Group, Sections, and Layout.
Подробно как создавать интерфейсы с помощью CompositionalLayout с примерами кода в статье.
#digest #полезное
В этой статье хочется познакомиться к UICollectionViewCompositionalLayout и с его помощью создать UICollectionView с прокручивающимися секциями, а затем еще немного более их кастомизировать, чтобы показать как просто с помощью UICollectionViewCompositionalLayout мы можем создавать UICollectionView, которые выглядят именно так как нам необходимо.
Compositional layouts - это декларативный вид API, который позволяет нам создавать большие макеты путем объединения небольших групп макетов. Compositional layouts имеют иерархию, состоящую из Item, Group, Sections, and Layout.
Подробно как создавать интерфейсы с помощью CompositionalLayout с примерами кода в статье.
#digest #полезное
❤13👍6🔥2👎1
📒 Настройка CI/CD с Никитой Стрельченко
Про CI/CD говорят постоянно: разработчики с разработчиками, разработчики с техлидами. Никита проведет в эту пятница доклад, и расскажет что такое CI/CD и как внедрить его в ваш продукт.
Смотреть наш прямой эфир и запись можно по данной ссылке
Эфир проведем в эту пятницу в 21:00 по мск🙂
Если у вас будут вопросы к гостю/докладу, вы можете задать вопрос мне @new_repository
#digest #доклад
Про CI/CD говорят постоянно: разработчики с разработчиками, разработчики с техлидами. Никита проведет в эту пятница доклад, и расскажет что такое CI/CD и как внедрить его в ваш продукт.
Смотреть наш прямой эфир и запись можно по данной ссылке
Эфир проведем в эту пятницу в 21:00 по мск🙂
Если у вас будут вопросы к гостю/докладу, вы можете задать вопрос мне @new_repository
#digest #доклад
❤13👍4🔥4🤡3
5 причин, по которым люди, находящиеся на крутой траектории роста, работают плохо (и что с этим делать)
* Эта статья о низкой производительности при стремительном росте была адаптирована из книги Radical Candor: будьте крутым боссом, не теряя своей человечности.
Одна из самых запутанных дилемм руководства - это когда человек, который должен брать на себя все больше и лучше с каждым днем, вместо этого облажается или просто выполняет паршивую работу.
- Сотрудник плохо перформит, потому что вы поставили его на неподходящую ему роль.
- Сотрудник только вышел на новую роль, на него свалилось много всего неизвестного, и он не справляется из-за переизбытка информации.
- Причины кроются где-то в личных или семейных событиях.
- У вас есть неявные ожидания от роли сотрудника, а он привык работать по-другому.
- Люди меняются, и роли, которые им подходили раньше, могут переставать подходить со временем.
#digest #полезное
* Эта статья о низкой производительности при стремительном росте была адаптирована из книги Radical Candor: будьте крутым боссом, не теряя своей человечности.
Одна из самых запутанных дилемм руководства - это когда человек, который должен брать на себя все больше и лучше с каждым днем, вместо этого облажается или просто выполняет паршивую работу.
- Сотрудник плохо перформит, потому что вы поставили его на неподходящую ему роль.
- Сотрудник только вышел на новую роль, на него свалилось много всего неизвестного, и он не справляется из-за переизбытка информации.
- Причины кроются где-то в личных или семейных событиях.
- У вас есть неявные ожидания от роли сотрудника, а он привык работать по-другому.
- Люди меняются, и роли, которые им подходили раньше, могут переставать подходить со временем.
#digest #полезное
👍11❤2👎2🔥1
Если вы хотите стать гостем на iOS Такой и выступить с докладом, возможно рассказать нам о чем-то интересном. То ждем ваших предложений @new_repository
💩1🤡1
Уважаемые подписчики!
Мы рады сообщить вам о ряде новых выпусков на нашем телеграм канале, посвященных мобильной разработке iOS. Мы будем рассматривать такие важные темы, как архитектура, Swift UI, многопоточность, работа с сетью, анимации и сложный UI. Кроме того, мы поможем Вам подготовиться к собеседованию и расскажем о самых эффективных методах для этого.
Но сначала мы готовим для Вас контент "Своя игра" по iOS. Это отличная возможность проверить свои знания и навыки в области мобильной разработки. А если вы хотите стать участником доклада по одной из тем, которые мы будем рассматривать, то обязательно пишите нам.
Мы уверены, что наши выпуски будут полезны не только для начинающих разработчиков, но и для профессионалов, которые хотят расширить свои знания и умения в этой области. Следите за нашими обновлениями и будьте в курсе самых последних тенденций в мобильной разработке iOS.
✅ Подписывайтесь на нас в телеграмме
✅ Подписывайтесь на нас в YouTube
Мы рады сообщить вам о ряде новых выпусков на нашем телеграм канале, посвященных мобильной разработке iOS. Мы будем рассматривать такие важные темы, как архитектура, Swift UI, многопоточность, работа с сетью, анимации и сложный UI. Кроме того, мы поможем Вам подготовиться к собеседованию и расскажем о самых эффективных методах для этого.
Но сначала мы готовим для Вас контент "Своя игра" по iOS. Это отличная возможность проверить свои знания и навыки в области мобильной разработки. А если вы хотите стать участником доклада по одной из тем, которые мы будем рассматривать, то обязательно пишите нам.
Мы уверены, что наши выпуски будут полезны не только для начинающих разработчиков, но и для профессионалов, которые хотят расширить свои знания и умения в этой области. Следите за нашими обновлениями и будьте в курсе самых последних тенденций в мобильной разработке iOS.
✅ Подписывайтесь на нас в телеграмме
✅ Подписывайтесь на нас в YouTube
👍22❤4🔥3🤡2🤣1
Императивный UIKit vs Декларативный SwiftUI
Для разработки iOS-приложений можно использовать два основных фреймворка: UIKit и SwiftUI. Однако при переходе со старого инструмента на новый, многие разработчики сталкиваются с трудностями, ведь парадигмы программирования у них сильно отличаются.
Цель статьи
Помочь разработчикам приложений для iOS понять различия между императивным и декларативным подходами к программированию, а также рассмотреть плюсы и минусы фреймворков UIKit и SwiftUI. Знакомство с ними необходимо для оптимизации процесса разработки и создания продукта высокого качества.
В первой части статьи рассматривается императивный и декларативный стиль, и это станет основой для всего последующего материала.
Во второй части вам расскажут о героях этой статьи — фреймворках UIKit и SwiftUI. Покажут какие подходы используются при разработке на каждом из них и в чём их отличия.
В третьей части разбираются плюсы и минусы рассмотренных подходов, чтобы сравнить два инструмента и помочь читателю выбрать то, что лучше подходит для решения его задач.
Всем советую данную статью, контент огонь🔥
#digest #полезное
Для разработки iOS-приложений можно использовать два основных фреймворка: UIKit и SwiftUI. Однако при переходе со старого инструмента на новый, многие разработчики сталкиваются с трудностями, ведь парадигмы программирования у них сильно отличаются.
Цель статьи
Помочь разработчикам приложений для iOS понять различия между императивным и декларативным подходами к программированию, а также рассмотреть плюсы и минусы фреймворков UIKit и SwiftUI. Знакомство с ними необходимо для оптимизации процесса разработки и создания продукта высокого качества.
В первой части статьи рассматривается императивный и декларативный стиль, и это станет основой для всего последующего материала.
Во второй части вам расскажут о героях этой статьи — фреймворках UIKit и SwiftUI. Покажут какие подходы используются при разработке на каждом из них и в чём их отличия.
В третьей части разбираются плюсы и минусы рассмотренных подходов, чтобы сравнить два инструмента и помочь читателю выбрать то, что лучше подходит для решения его задач.
Всем советую данную статью, контент огонь🔥
#digest #полезное
🔥21👍3❤2👏2💩2👨💻2🤩1
Многопоточность в iOS-разработке
В этой статье разбираются с основами многопоточности и знакомятся с такими инструментами Swift, как Grand Central Dispatch (GCD), OperationQueues, NSLock. А также существующими низкоуровневыми технологиями, такими как pthread и NSThread. Бонусом вам расскажут про async/await. Мы обсудим, как эти инструменты помогают управлять асинхронными и параллельными операциями, и посмотрим на некоторые примеры их использования.
Многопоточность — это аспект конкурентного программирования, позволяющий программе выполняться в нескольких потоках одновременно. Это улучшает производительность, поскольку позволяет более эффективно использовать процессорное время и проводить операции в фоновом режиме.
Суть многопоточности — разделение работы на меньшие задачи, которые можно выполнять параллельно. Однако важно помнить, что многопоточность не всегда является панацеей. Иногда она приводит к сложностям в управлении состоянием и синхронизации.
Swift предлагает различные методы реализации многопоточности, такие как Grand Central Dispatch (GCD), OperationQueue, NSLock. И низкоуровневые технологии, такие как pthread и NSThread.
Реализация каждой из технологий в статье.
#digest #многопоточность
В этой статье разбираются с основами многопоточности и знакомятся с такими инструментами Swift, как Grand Central Dispatch (GCD), OperationQueues, NSLock. А также существующими низкоуровневыми технологиями, такими как pthread и NSThread. Бонусом вам расскажут про async/await. Мы обсудим, как эти инструменты помогают управлять асинхронными и параллельными операциями, и посмотрим на некоторые примеры их использования.
Многопоточность — это аспект конкурентного программирования, позволяющий программе выполняться в нескольких потоках одновременно. Это улучшает производительность, поскольку позволяет более эффективно использовать процессорное время и проводить операции в фоновом режиме.
Суть многопоточности — разделение работы на меньшие задачи, которые можно выполнять параллельно. Однако важно помнить, что многопоточность не всегда является панацеей. Иногда она приводит к сложностям в управлении состоянием и синхронизации.
Swift предлагает различные методы реализации многопоточности, такие как Grand Central Dispatch (GCD), OperationQueue, NSLock. И низкоуровневые технологии, такие как pthread и NSThread.
Реализация каждой из технологий в статье.
#digest #многопоточность
👍14❤5🔥2👎1