Подписчик канала поделился своим проектом – приложением для macOS, которое позволяет подменять локацию запущенного параллельно симулятора. Вот что оно умеет:
🗺ставить локацию к текущей геопозиции
🗺ставить локацию к точке на карте
🗺строить маршрут между точками и симулировать движение по нему с заданной скоростью
Полезная штука для всех, кому нужно дебажить приложения, работающие с геолокацией.
🗺ставить локацию к текущей геопозиции
🗺ставить локацию к точке на карте
🗺строить маршрут между точками и симулировать движение по нему с заданной скоростью
Полезная штука для всех, кому нужно дебажить приложения, работающие с геолокацией.
GitHub
GitHub - nexron171/SimVirtualLocation: iOS/Android device and simulator location mocking tool
iOS/Android device and simulator location mocking tool - nexron171/SimVirtualLocation
🔥39👍10
Команда Авито гоняет 1500 компонентных тестов на каждый PR, причем сразу на двух версиях iOS – самой старой поддерживаемой и самой новой. Если запускать их последовательно, то весь прогон занимает больше 2.5 часов. В статье рассказывается про их опенсорсный тест-раннер Emcee, который сокращает время прогона этих тестов до 15 минут. Из интересных фичей Emcee:
🐑Управление симуляторами на ферме Mac Mini
📈Сбор статистики по запускам
🔄Перезапуски при необходимости
🛠Интеграция с другими частями тестовой инфры
🐑Управление симуляторами на ферме Mac Mini
📈Сбор статистики по запускам
🔄Перезапуски при необходимости
🛠Интеграция с другими частями тестовой инфры
Хабр
Раннер Emcee. Всем айосерам по тестовой ферме
В iOS-приложении Авито куча UI-тестов — вы это уже наверняка знаете, потому что мы говорим про них постоянно. Это позволяет нам релизиться раз в неделю, причём регрессионное тестирование с ручными...
🤯21🔥7
Если тестов у вас не так много или вы ищете более простое решение, то посмотрите на статью про ускорение прогона тестов от Vivid Money, где они рассказывают, как улучшили свой пайплайн с помощью fastlane и чистого xcodebuild.
Хабр
Ускоряем прохождение iOS UI-тестов. Часть 1. Запуск тестов без сборки проекта
Хабр, привет! Меня зовут Борис. Я Mobile AQA lead в Vivid Money. Это вступительная статья в цикле статей по iOS-автоматизации, в которых я расскажу о том, как ускорить прохождение UI-тестов. Данная...
👍14👎3
iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
Линкер – это специальная программа, которая собирает в один исполняемый файл несколько скомпилированных отдельно объектных файлов. Напрямую с линкером вы скорее всего работаете редко, максимум – в Build Settings какие-нибудь флаги выставляете или разбираетесь…
☀️Просыпайтесь, айосеры, пора переводить ваши приложения на SwiftUI. Но только после того, как вы прочитаете наш еженедельный дайджест топовых материалов!
🔥Самые заплюсованные вами статьи за неделю.
Серия статей про линкеры
Про раннер тестов Emcee
Apple Technical Notes
🎨В течение недели было несколько неплохих материалов про разработку UI. В топ они не пробрались, но если вы любите красить кнопки больше, чем писать тесты или заниматься архитектурой – вам понравятся.
Два способа реализовать градиент на UILabel
Темы в SwiftUI
Тред про недостатки Auto Layout
🛠Еженедельная секция “Полезные инструменты”.
Подмена локации в симуляторе
Каталог всех UIKit элементов
👀Напоминаю, что в Good Reads есть и другие каналы: @leadgr, @droidgr и @qa_channel. Я не понимаю, почему вы на них еще не подписались!
Как сделать встречи менее бесполезными
Зачем QA уметь в CI/CD
Серия статей про организацию архитектурных интервью для мобильщиков
Жду ваших реакций ❤️🥰👍🔥. Они помогают мне понять, что дайджесты вам все еще нужны! А в комментариях жду любые идеи по развитию канала дальше!
#digest
🔥Самые заплюсованные вами статьи за неделю.
Серия статей про линкеры
Про раннер тестов Emcee
Apple Technical Notes
🎨В течение недели было несколько неплохих материалов про разработку UI. В топ они не пробрались, но если вы любите красить кнопки больше, чем писать тесты или заниматься архитектурой – вам понравятся.
Два способа реализовать градиент на UILabel
Темы в SwiftUI
Тред про недостатки Auto Layout
🛠Еженедельная секция “Полезные инструменты”.
Подмена локации в симуляторе
Каталог всех UIKit элементов
👀Напоминаю, что в Good Reads есть и другие каналы: @leadgr, @droidgr и @qa_channel. Я не понимаю, почему вы на них еще не подписались!
Как сделать встречи менее бесполезными
Зачем QA уметь в CI/CD
Серия статей про организацию архитектурных интервью для мобильщиков
Жду ваших реакций ❤️🥰👍🔥. Они помогают мне понять, что дайджесты вам все еще нужны! А в комментариях жду любые идеи по развитию канала дальше!
#digest
Хабр
Раннер Emcee. Всем айосерам по тестовой ферме
В iOS-приложении Авито куча UI-тестов — вы это уже наверняка знаете, потому что мы говорим про них постоянно. Это позволяет нам релизиться раз в неделю, причём регрессионное тестирование с ручными...
👍33🤮7🔥2😁1
Большие вьюшки в SwiftUI часто содержат в себе сразу несколько триггеров обновления отображения. Чем сложнее вьюшка, тем тяжелее понять, который из них стал причиной того, что поведение отличается от ожидаемого. В статье разбирается несколько способов дебага, которые спасают в такой ситуации.
SwiftLee
Debugging SwiftUI views: what caused that change?
Debugging SwiftUI views allows you to find the cause of a redraw. Solve unexpected animation issues using this technique.
🔥12👍2
Еще один сайт с подборкой неочевидных советов по работе с Xcode. В отличие от того, что я постил в прошлый раз, этот:
1. Актуальный
2. С классными иллюстрациями
3. Часто обновляется
1. Актуальный
2. С классными иллюстрациями
3. Часто обновляется
👍29💩5🔥4❤2
Ребята из MartianCraft написали большую статью про свой подход к собеседованиям iOS разработчиков. Из интересных практик:
💻На технический собес кандидат должен принести какой-то свой код для обсуждения: пет-проджект, рабочий проект, какие-то сниппеты
💬 Все интерью строится вокруг самостоятельного рассказа кандидата об этом коде
🙋Если какая-то тема не раскрывается, про нее задают дополнительные высокоуровневые вопросы
🏡Иногда кандидату дают тестовое – добавить какую-то фичу в эту кодовую базу
Помимо самого процесса в статье есть еще и перечисление тем, знания которых ребята ожидают от кандидата.
💻На технический собес кандидат должен принести какой-то свой код для обсуждения: пет-проджект, рабочий проект, какие-то сниппеты
💬 Все интерью строится вокруг самостоятельного рассказа кандидата об этом коде
🙋Если какая-то тема не раскрывается, про нее задают дополнительные высокоуровневые вопросы
🏡Иногда кандидату дают тестовое – добавить какую-то фичу в эту кодовую базу
Помимо самого процесса в статье есть еще и перечисление тем, знания которых ребята ожидают от кандидата.
Martiancraft
A Take on iOS Developer Interviews
iOS interviews can be frustrating for many, but at MartianCraft we're working to change the perspective and make the process better for everyone involved. Learn how we're changing the iOS interview landscape and get an inside scoop on our interview process.
🤮27👍8🔥5
Знание каких вещей надо проверять на техническом интервью?
Anonymous Poll
56%
Язык (Swift/ObjC)
38%
Разработка UI
48%
Архитектурные подходы
23%
Знание iOS фреймворков
36%
Паттерны и парадигмы
48%
Многопоточность
23%
Инженерные практики (тестирование, VCS, процессы)
1%
Свой вариант (в комменты)
32%
Посмотреть результаты
💩34🔥10👍2
В GitHub теперь можно дополнять любой текст автоматически генерируемыми диаграммами. Это работает и в README, и в описании PR, и в комментариях. Попробуйте, для объяснения сложных взаимодействий компонентов кода это работает гораздо лучше написания длинных блоков текста.
Пример Mermaid кода для описания диаграммы:
Пример Mermaid кода для описания диаграммы:
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
The GitHub Blog
Include diagrams in your Markdown files with Mermaid
Mermaid is a JavaScript based diagramming and charting tool that takes Markdown-inspired text definitions and creates diagrams dynamically in the browser.
👍65🤩3👏2
С iOS 15
- Поддерживается не просто маркдаун, а его расширенная версия – GitHub Flawored Markdown.
- Интерполяция не работает, если подставлять строковую переменную as is, надо заворачивать в
- Переносы строк не работают, если не добавить специальное свойство
AttributedString
и Text
поддерживают рендеринг Markdown строк. В статье рассказывается про три неочевидных момента:- Поддерживается не просто маркдаун, а его расширенная версия – GitHub Flawored Markdown.
- Интерполяция не работает, если подставлять строковую переменную as is, надо заворачивать в
LocalizedStringKey.
- Переносы строк не работают, если не добавить специальное свойство
Swifty Tech by Marco Eidinger
3 surprises when using Markdown in SwiftUI
SwiftUI in iOS 15 uses GitHub Flavored Markdown. Tips for using a Text view with non string literals or an AttributedString with line breaks
🔥25👍9
Крис Латтнер, создатель Swift, рассказал на форуме о том, почему прошлым летом он окончательно вышел из состава группы, отвечающей за дизайн Swift. Причины:
- Токсичность на созвонах рабочей группы
- Игнорирование формальных пропозалов и комментариев Латтнера
- Нарушение базовых принципов дизайна, установленных Латтнером в начале разработки
- Токсичность на созвонах рабочей группы
- Игнорирование формальных пропозалов и комментариев Латтнера
- Нарушение базовых принципов дизайна, установленных Латтнером в начале разработки
Swift Forums
Core team to form language workgroup
The core team is currently looking at restructuring the project's leadership to provide more pathways for community members to become actively involved in the project's stewardship. Swift has gradually introduced more workgroups to focus on technical and…
😱67😢32💩13👍3
Раз уж мы начали говорить про SwiftUI, то вот еще одна неплохая статья. Разбор того, как подходить к unit-тестированию SwiftUI приложений. Там в итоге все ожидаемо упирается в то, что надо аккуратно выносить логику в отдельные классы, тестировать их, а сами вьюшки не трогать – но сами примеры, на которых эта идея доносится, мне понравились.
Swift by Sundell
Writing testable code when using SwiftUI | Swift by Sundell
Let’s take a look at how we can make our UI-related logic fully testable, even when that logic is primarily used within SwiftUI-based views.
👍12💩11
Пример реализации unidirectional архитектуры с использованием async/await. Перед прочтением советую посмотреть предыдущие посты серии про реализацию этой архитектуры:
- Basics
- Best practices
- Container Views
- Connectors
- Basics
- Best practices
- Container Views
- Connectors
Swift with Majid
Redux-like state container in SwiftUI. Swift concurrency model.
Over the last two years, I have actively used unidirectional flow to develop my apps. I covered the approach I use in the series of posts about building Redux-like state containers. This week I want to share with you how this approach adapts to the latest…
👍14👎5
Прошла неделя «Перформанс и профайлинг” от Podlodka Crew, где мы поделились опытом как оптимитизировать размер приложения.
Компания Intermedia разрабатываем коммуникационную платформу Unite и платформу для видеоконференций AnyMeeting .
В наши команды мы ищем iOS разработчиков, которые хотели бы развиваться в продуктовой компании.
Наши вакансии в Unite https://spb.hh.ru/vacancy/52118728 и AnyMeeting https://spb.hh.ru/vacancy/49587520.
Ваши вопросы по вакансии задавайте @apanova78
Компания Intermedia разрабатываем коммуникационную платформу Unite и платформу для видеоконференций AnyMeeting .
В наши команды мы ищем iOS разработчиков, которые хотели бы развиваться в продуктовой компании.
Наши вакансии в Unite https://spb.hh.ru/vacancy/52118728 и AnyMeeting https://spb.hh.ru/vacancy/49587520.
Ваши вопросы по вакансии задавайте @apanova78
Intermedia
Intermedia | Unified Communications, business email, cloud voice, web/video/content sharing, file backup, identity and access management…
Intermedia is a leading one-stop shop for unified communications, business email, VoIP, web/ video/ content sharing, identity & security services. Learn more
👍1
А теперь сделаем zoom out и на примере InDriver посмотрим на то, как может выглядеть модульная архитектура приложения, в которой каждый модуль написан по UDF.
Хабр
Модуляризация доменного слоя в UDF. Часть II
В предыдущей части мы рассмотрели, что такое домен и какими принципами можно руководствоваться при его модуляризации. В этой части сконцентрируемся на типах связей между модулями и различиях в...
👍16
Саша Зимин выложил в Open source код Muna – своей утилиты для продуктивности под macOS. Можно посмотреть, как пилить кастомный UI на Cocoa или просто поддержать Сашу звездой!
GitHub
GitHub - azimin/muna: Muna is macOS app that helps you create reminders in less than 5 seconds
Muna is macOS app that helps you create reminders in less than 5 seconds - azimin/muna
🥰31💩17👍16❤1👎1
В Swift 4.2 появился новый property wrapper
@dynamicMemberLookup,
который дает возможность обращаться через точку к любому свойству типа, которое будет резолвиться в рантайме, в том числе к KeyPath.
В статье показывается пример того, как эта фича помогает сократить бойлерплейт в некоторых модельных классах.swift tips
The power of Dynamic Member Lookup
In Swift 4.2 a new property wrapper @dynamicMemberLookup was introduced with SE-0195. The introduction reads This proposal introduces a new @dynamicMemberLookup attribute. Types that use it provide "dot" syntax for arbitrary names which are resolved at runtime…
👍6
👍39👎21🎉1
Всем привет.
Война – это ужасно, и того, что происходит, не должно происходить. Я считаю недопустимой войну, развязанную Россией, и безумными действия российского правительства.
Бояться в этой ситуации – абсолютно нормально, потому что никто не может представить, как дальше будут развиваться события. Но постарайтесь не давать страху перерастать в панику. Это – плохое состояние, в котором любые принятые решения будут, скорее всего, неверными.
Чтобы у вас была возможность отвлечься от новостных лент, я продолжу выкладывать в свои каналы технический контент. Кроме этого, я обязательно буду делиться ссылками, актуальными сейчас – новостями про работу важных для нас сервисов, советами по релокации. Если вы не захотите его читать – можете замьютить канал или отписаться от него. Если захотите поделиться своим состоянием и мыслями – приходите в @iosgt.
Ребята из 🇺🇦, держитесь ❤️
Война – это ужасно, и того, что происходит, не должно происходить. Я считаю недопустимой войну, развязанную Россией, и безумными действия российского правительства.
Бояться в этой ситуации – абсолютно нормально, потому что никто не может представить, как дальше будут развиваться события. Но постарайтесь не давать страху перерастать в панику. Это – плохое состояние, в котором любые принятые решения будут, скорее всего, неверными.
Чтобы у вас была возможность отвлечься от новостных лент, я продолжу выкладывать в свои каналы технический контент. Кроме этого, я обязательно буду делиться ссылками, актуальными сейчас – новостями про работу важных для нас сервисов, советами по релокации. Если вы не захотите его читать – можете замьютить канал или отписаться от него. Если захотите поделиться своим состоянием и мыслями – приходите в @iosgt.
Ребята из 🇺🇦, держитесь ❤️
❤382👎34👍29💩9🔥6👏1
Присыпанный экспериментами разбор того, как в iOS работают анимации. Понимание граничных кейсов может сильно помочь вам, когда вы в следующий оаз столкнетесь с задачей анимировать что-то не очень стандартное.
Хабр
Как UIView мешал слоям анимироваться
Эту часть я хотел посвятить анимациям, но понял, что это очень большая тема и для нее тоже нужен контекст. Поэтому сначала расскажу, что же лежит под капотом тех методов, которые мы обычно используем...
👏35💩24👍3