Pull to refresh
0
0
Send message

AppMetrica, MyTracker и Amplitude: подробно сравниваем три системы продуктовой аналитики и ищем лучшую

Reading time14 min
Views7.2K

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

Продуктовые аналитики red_mad_robot Валера Ройзен и Давид Тумасян подробно рассмотрели существующие инструменты, используемые в работе, и сравнили их по возможностям и функционалу, которым они «нафаршированы». А заодно рассказали, в чём заключается роль PA и какие задачи он решает — в том числе именно на проектах red_mad_robot.

Читать далее
Rating0
Comments0

Устройство компилятора Swift. Часть 1

Reading time4 min
Views19K

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

Читать дальше
Total votes 28: ↑25 and ↓3+22
Comments3

О многообразии форм однонаправленных архитектур в Swift

Reading time17 min
Views3.4K

В 2019 году Apple представила миру SwiftUI. И два года спустя появился async/await. Хоть мы и склонны думать, что хорошие архитектуры не должны зависеть от специфик фреймворков, хорошие архитектуры все-таки являются лояльными гражданами тех же самых фреймворков и общей экосистемы. Так… как же SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет? Давайте посмотрим.

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments0

Как UIView мешал слоям анимироваться

Reading time6 min
Views8.2K

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

Заодно разберемся с таким понятием, как неявные анимации.

Читать далее
Total votes 11: ↑10 and ↓1+11
Comments2

iOS Dev Skills. Performance Review

Reading time2 min
Views1.1K

CTO: Balancing Leadership and Architecture.

As a CTO, effective leadership goes beyond technical architecture. Conducting regular performance reviews is a crucial part of managing teams.

Note: The performance review schedule may vary depending on the specific
company's policies and guidelines.

For early-stage startups, lacking CTO expertise in conducting performance reviews is common. In my experience, I've tailored grades to encompass all aspects of professional iOS development, keeping project-specific needs in mind. Being the first in the team can offer significant growth opportunities. However, acknowledging any lack of people management skills and compensating through continuous growth is essential.

I've compiled my insights on structuring the iOS development department, conducting performance reviews, and most importantly, emphasizing the significant distinctions between developers' levels based on well-defined criteria.

Read more
Rating0
Comments0

Раскладываю Swift Runtime на детали

Level of difficultyMedium
Reading time9 min
Views7.8K

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

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

Привет, меня зовут Александр Пахомов, я работаю в Альфа-Банке на проекте для юридических лиц Альфа Бизнес Мобайл. В статье расскажу про Runtime:

— покопаемся в исходниках: узнаем на каком языке написан и что делает;
— напишем простой код, скомпилируем и посмотрим как он выглядит на уровне SIL и IR;
— добавлю в мой исходный код функцию swift_releaseи посмотрю результат;
— узнаю, что будет, если не учесть ‘name mangling’;
— и покажу ненастоящую функцию.

Читать далее
Total votes 37: ↑37 and ↓0+37
Comments1

Полезные iOS-инструменты для дебаггинга

Level of difficultyMedium
Reading time15 min
Views7K

Привет! Меня зовут Альберт, я занимаюсь iOS-разработкой в компании SimbirSoft! Хочу поделиться инструментами для дебаггинга iOS-приложений, которые юзаю лично сам. Любой разработчик наверняка знает, что создание высококачественного приложения требует не только написания кода. Одна из важнейших составляющих достижения успеха в этом деле — эффективная отладка. К счастью, существует множество инструментов, которые помогут быстро и эффективно диагностировать, а также устранять проблемы. В этой статье мы подробно рассмотрим нативные и сторонние инструменты, доступные для отладки iOS-приложений, как использовать эти инструменты для диагностики и устранения распространенных проблем. Если интересно, тогда ныряйте под кат.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments15

Как мы автоматизируем iOS: настройка Gitlab CI + Fastlane + Firebase + ItunesConnect

Reading time17 min
Views16K

В основном идея использования CI/CD для iOS, да и для других платформ, — это автоматизация рутинной работы. Когда мы работаем над одним приложением, можем вручную собирать небольшой проект. Но команда растёт, хочется тратить время эффективнее, чем вручную собирать проект или объяснять новичкам, что же там с Code-signing нужно делать.

Пожалуй, самое рутинное и самое важное занятие, которое берёт на себя CI, — это прогон тестов. Нет зелёных тестов? В master не попадёшь. А с ростом команды вероятность того, что кто-то вольёт в master нерабочий код, будет только увеличиваться. Нужна автоматизация.

В этой статье я хочу подробно рассказать о пути настройки Gitlab CI + Fastlane + Firebase + Testflight. Примеры приводятся на основе одного проекта, в котором участвовали 10 разработчиков. В конце будут описаны проблемы, с которыми мы сталкивались, и их решения.

Для кого будет полезен этот опыт? Для всех, кому нужен CI/CD и кто сидит на Gitlab. Для Github будет другая связка, например с Travis, — остальные компоненты неизменны. В нашей команде все используют Gitlab CI, Fastlane вместо голого xcodebuild для быстроты и удобства разработки, Firebase и Testflight.

Если у нас бесплатный Gitlab и мы укладываемся в лимит Firebase, то получаем бесплатное решение по настройке CI/CD.

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments7

Подробный гайд Dynamic Island и Live Activities

Reading time7 min
Views6.4K

Live Activities появились начиная с версии IOS 16.1 на всех моделях iPhone. Live Activity отображают самые последние данные вашего приложения на экране блокировки iPhone и в Dynamic Island. Это позволяет вашим пользователям видеть самую актуальную информацию которая происходит в вашем приложении. 

Важно понимать что и Dynamic Island и Live Activities сами по себе являются частью ActivityKit фреймворка, поэтому для простоты, дальше в посте я буду называть Dynamic Island и Live Activities просто - Live Activities.

Note1: Live Activity доступен только на iPhone.

Note2: Во время написания поста Dynamic Island доступен только на моделях iPhone 14 Pro и Pro Max.

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments1

Память в Swift от 0 до 1

Reading time10 min
Views83K

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

Читать далее
Total votes 21: ↑20 and ↓1+23
Comments16

Как устроен счетчик ссылок в Swift

Reading time14 min
Views20K

Мы в iOS команде Vivid Money стремимся глубже понимать инструменты, которыми пользуемся каждый день. Один из таких – это язык программирования Swift. Он состоит из нескольких частей: компилятора, стандартной библиотеки и рантайма. Компилятор преобразует код понятный для человека в код понятный компьютеру. Стандартная библиотека предоставляет разработчикам готовые структуры данных, оптимизированные для применения в боевых проектах. А вот рантайм – это, поистине, сердце языка. В нем происходит выделение памяти, динамическое приведение типов и подсчет ссылок. И нам стало интересно, как реализован подсчет ссылок в рантайме. И  вот мы вдохновились публикациями легендарного Майка Эша (Mike Ash), собрали компилятор и начали исследовать. Посмотрели на работу алгоритма подсчета ссылок и в этой статье расскажем вам о нём.

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments14

Information

Rating
Does not participate
Registered
Activity