TGViewer
Channel Public Channel
iOS Mobile | YeaHub

iOS Mobile | YeaHub

@yeahub_ios_mobile

Теория, подготовка к интервью и курсы для iOS разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Subscribers
248
Photos
406
Videos
36
Links
587

Showing posts older than #279 · Back to latest

Older Posts 12 shown
Post #277 107
#полезное
😊 Режим агента и поддержка MCP в Copilot для Xcode
Если вы до сих пор не попробовали Copilot, самое время! В актуальном релизе появился режим агента и поддержка MCP. Copilot может выполнять многоступенчатые задачи, такие как анализ кодовой базы и выполнение команд терминала. А режим агента позволяет Copilot выполнять итерацию по собственному коду, обнаруживать и исправлять ошибки.

Режим агента:
🔴Семантическое понимание: Copilot интерпретирует запрос и анализирует кодовую базу.
🔴Предложение по плану: Copilot разбивает задачу на этапы и формулирует план действий.
🔴Выполнение плана: Copilot запрашивает подтверждение для выполнения действий.
🔴Задача выполнена: Copilot проверяет работу и предоставляет сводную информацию о изменениях.

Поддержка MCP:
🟡Model Context Protocol (MCP) позволяет моделям ИИ взаимодействовать с внешними инструментами через единый интерфейс.
🟡Copilot поддерживает MCP, что расширяет его возможности в Xcode.
🟡Настройка локальных серверов MCP возможна через файл конфигурации.
🟡Инструменты MCP можно вызывать непосредственно в режиме агента с помощью естественного языка.

👉Новости 👉База вопросов
  • ❤ 1
Post #275 89
#полезное
😎 ignoredByLayout() — Как применить геометрические эффекты, не нарушая макет
ignoredByLayout — недооцененный API в SwiftUI. Мало информации, необычные сценарии использования. Идем в документацию:
🟠Возвращает эффект, который применяется только при отрисовке
🟠Отключает изменения макета во время трансформации
🟠View игнорирует преобразование при вычислениях макета

Понятнее не стало, разбираемся в природе ignoredByLayout на практике:
🟢Визуальное преобразование не меняется.
🟢Система игнорирует геометрическое преобразование.
🟢Свойства геометрии передаются без изменений.

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

👉Новости 👉База вопросов
Post #274 71
#статьи
🛞 Swift Ecosystem Steering Group

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

👉Новости 👉База вопросов
Swift Forums Announcing the Ecosystem Steering Group Fellow Swift enthusiasts, As Swift continues to grow into new domains, developers rely on dependable libraries, powerful tools, and clear guidance. To support this, I am excited to introduce a new steering group within the Swift project: the Swift Ecosystem…
Post #273 71
#Собес #git
🤔 Что такое git reflog?

git reflog показывает историю всех перемещений HEAD, включая коммиты, слияния и переключения веток. Эта команда полезна для восстановления потерянных коммитов или веток.

👉Новости 👉База вопросов
Post #272 68
#ЛитКод
Задача: 341. Flatten Nested List Iterator

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

Реализуйте класс NestedIterator:

NestedIterator(List<NestedInteger> nestedList) Инициализирует итератор вложенным списком nestedList.
int next() Возвращает следующий целый элемент вложенного списка.
boolean hasNext() Возвращает true, если в вложенном списке еще остались целые числа, и false в противном случае.

Пример:
Input: nestedList = [[1,1],2,[1,1]]
Output: [1,1,2,1,1]
Explanation: By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,1,2,1,1].


👨‍💻 Алгоритм:

1⃣Инициализация
Сохраняйте исходный вложенный список в стеке или очереди. Используйте стек для сохранения состояния итерации по вложенным спискам.

2⃣Метод next()
Возвращает следующий целый элемент из стека или очереди. Если текущий элемент является списком, развёртывайте его и добавляйте элементы в стек.

3⃣Метод hasNext()
Проверяет, есть ли в стеке или очереди оставшиеся целые элементы. Если на вершине стека находится список, развёртывайте его до тех пор, пока не встретится целый элемент.

😎 Решение:
class NestedIterator {
private var stack: [NestedInteger] = []

init(_ nestedList: [NestedInteger]) {
self.flatten(nestedList)
}

private func flatten(_ nestedList: [NestedInteger]) {
for ni in nestedList.reversed() {
stack.append(ni)
}
}

func next() -> Int {
return stack.removeLast().getInteger()
}

func hasNext() -> Bool {
while !stack.isEmpty, !stack.last!.isInteger() {
flatten(stack.removeLast().getList())
}
return !stack.isEmpty
}
}


👉Новости 👉База вопросов
Post #264 81
#полезное
😬 Создание больших приложений на SwiftUI
Нет ничего более спорного чем архитектура. Выбор архитектуры зависит от типа приложения. Данная статья представляет из себя гайд по решению базовых вопросов при работе с MV паттернами. Статья описывает не только теорию, но и содержит очень много практических примеров. Особенно ценным мне показался комплексный подход к решению, автор не только знакомит с концепциями, но и в деталях показывает какие проблемы могут возникнуть и к какому решению пришел он. Только часть топиков из статьи:
🟠Модульная архитектура
🟠Понимание структуры MV - паттернов
🟠Отличие концепции View и экрана
🟠Концепция виртуального DOM в React и SwiftUI
🟠Проблемы с традиционным подходом MVVM в SwiftUI
🟠Использование Store в качестве агрегатных модели
🟠Использование @EnvironmentObject
🟠Использование кэширования
🟠Модули и их роль
🟠Навигация в SwiftUI
🟠Отображение ошибок
🟠Форматирование данных
🟠Методы написания тестов
🟠Проблемы с тестированием реализации
🟠E2E-тестирование
🟠Интеграционное тестирование
🟠Модульное тестирование и доступ к данным
🟠Тестирование пользовательского интерфейса
🟠Баланс между модульными и пользовательскими тестами

Возникает логичный вопрос, откуда такое рвение делиться знаниями? В конце ссылка на авторский платный курс за 150$, но статья и сама по себе хороша

👉Новости 👉База вопросов
Post #263 54
#полезное
❤️‍🔥 Новые фичи accessibility

Как обычно, в мае Apple показали новые фичи доступности, которые появятся в ближайших версиях iOS:

🟠Accessibility Nutrition Labels – отдельная плашка на странице приложения в сторе со списком поддержанных фичей
🟠Magnifier для macOS – можно использовать камеру телефона как лупу
🟠Accessibility Reader – отдельный режим чтения контента, доступный из любого приложения
🟠Vehicle Motion Cues – теперь не будет укачивать и при работе на ноуте

👉Новости 👉База вопросов
Apple Newsroom Apple unveils powerful accessibility features coming later this year Apple today announced new accessibility features coming later this year, including Accessibility Nutrition Labels.
Post #262 52
#Собес #git
🤔 Как отменить коммит, который уже был отправлен и обнародован?

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

👉Новости 👉База вопросов
Post #261 59
#полезное
👍 Комбинация жестов и анимаций в SwiftUI

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

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

Для обработки жестов в SwiftUI нам нужны соответствующие модификаторы.

В этом материале разобрано несколько примеров (в том числе и с анимацией в виде волны).

👉Новости 👉База вопросов
Post #260 49
#полезное
😊 SwiftUI Совет

Управляйте размером кругового ProgressView с помощью модификатора .controlSize().

👉Новости 👉База вопросов
Post #259 57
#полезное
🥺 Отслеживание и контроль размера приложения с помощью Tuist

Новые фичи, дополнительные ассеты и постоянно увеличивающаяся кодовая база — всё это ведёт к росту размера приложения.

Новая фича tuist позволяет находить дублирование ассетов, неоптимизированные ресурсы, легаси-код и лишние зависимости.

📖 Подробнее можно почитать здесь (или посмотреть ролик тут).

Основная часть анализа выполняется локально с помощью новой либы Rosalind, а если юзать tuist inspect bundle с флагом --json, можно получить JSON-вывод прямиком из rosalind.

👉Новости 👉База вопросов
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →