Кстати, делюсь главной книгой года по продажам в Amazon.
За которую я отдал 60$. А вам, дорогие зрители, дарю ее!
https://t.me/iosmmcresources/129
За которую я отдал 60$. А вам, дорогие зрители, дарю ее!
https://t.me/iosmmcresources/129
Использование AI-тулкитов в кровавом бигтехе
Обещал вам давно максимально практичный выпуск про ваши там Cursor'ы, Claude Code и тп и тд. Долго к нему шли. Но здесь уникальность в том, что показываем РЕАЛЬНУЮ КОДОВУЮ БАЗУ ПРОЕКТА.
Позвал своего коллегу @BigAppleMax обсудить вопросы:
🟣 Может ли АИ заменить разрабов
🟣 Как компании помогают/стимулируют изучать этот набор инструментов
🟣 Какие скиллы деформируются, а какие придется качать
🟣 Разберем UI, Network, MCP и многое другое
Ставьте лайки, мои любимые друзья
Обещал вам давно максимально практичный выпуск про ваши там Cursor'ы, Claude Code и тп и тд. Долго к нему шли. Но здесь уникальность в том, что показываем РЕАЛЬНУЮ КОДОВУЮ БАЗУ ПРОЕКТА.
Позвал своего коллегу @BigAppleMax обсудить вопросы:
Ставьте лайки, мои любимые друзья
Please open Telegram to view this post
VIEW IN TELEGRAM
AI Engineering: Основные навыки AI-разработчика
Давайте немного о книге выше.
Chip Huyen пишет:
Если вкратце, она определяет такие критерии:
1️⃣ Prompting
Нужно формулировать инструкции так, чтобы модель действовала предсказуемо. Это как писать ТЗ для гениального, но капризного подрядчика. Если инструкция двусмысленна, результат непредсказуем.
2️⃣ Контекст-инженерия
Умей превращать хаотичные документы в осмысленный контекст, который улучшает ответы. Она пишет, что модель умный собеседник, но половина ее интеллекта зависит от того, что вы ей расскажете перед вопросом.
3️⃣ Адаптация моделей: finetuning, выбор моделей, компромиссы
Нужно понимать, когда достаточно промпта, когда нужен RAG, а когда — дообучение. Как в готовке блюд. Иногда достаточно соли, иногда нужна новая специя, а иногда целый новый рецепт.
4️⃣ Оценка качества (evaluation): метрики, AI-судьи, тесты
Умей системно измерять качество, а не на глаз. Тут уже сравнение про медицину, где без диагностики улучшения невозможны.
Если применять кейсы к мобильной разработке, то знания устройства работы облачных LLMок поможет лучше делать приложения. Например, моя задача сверстать кнопку. Как помогут мне знания?
В идеале, нужно делать так:
1. Вместо обычного запроса "сверстай мне кнопку" дай АИ максимальное описание с API JSON'ом, стили, состояния
2. Опиши какие действия она выполняет.
3. Какие условия и ограничения есть.
4. Отдельно автор подчеркивает важность guardrails. Для UI это означает: проверка, что данные валидны. Убедись что AI не прислал недопустимый код. Убедись что поведение безопасно.
5. Огромный акцент на feedback loop: не забывайте писать аишки правильный ли результат она сделала. Даже ваши лайки влияют на ее следующие генерации.
Давайте немного о книге выше.
Chip Huyen пишет:
AI-разработчик — это не тот, кто общается с ChatGPT. Это тот, кто умеет превращать модель в рабочую систему. Если классический разработчик пишет правила, то AI-разработчик пишет условия, в которых модель думает правильно.
Если вкратце, она определяет такие критерии:
1️⃣ Prompting
Нужно формулировать инструкции так, чтобы модель действовала предсказуемо. Это как писать ТЗ для гениального, но капризного подрядчика. Если инструкция двусмысленна, результат непредсказуем.
2️⃣ Контекст-инженерия
Умей превращать хаотичные документы в осмысленный контекст, который улучшает ответы. Она пишет, что модель умный собеседник, но половина ее интеллекта зависит от того, что вы ей расскажете перед вопросом.
3️⃣ Адаптация моделей: finetuning, выбор моделей, компромиссы
Нужно понимать, когда достаточно промпта, когда нужен RAG, а когда — дообучение. Как в готовке блюд. Иногда достаточно соли, иногда нужна новая специя, а иногда целый новый рецепт.
4️⃣ Оценка качества (evaluation): метрики, AI-судьи, тесты
Умей системно измерять качество, а не на глаз. Тут уже сравнение про медицину, где без диагностики улучшения невозможны.
Если применять кейсы к мобильной разработке, то знания устройства работы облачных LLMок поможет лучше делать приложения. Например, моя задача сверстать кнопку. Как помогут мне знания?
В идеале, нужно делать так:
1. Вместо обычного запроса "сверстай мне кнопку" дай АИ максимальное описание с API JSON'ом, стили, состояния
2. Опиши какие действия она выполняет.
3. Какие условия и ограничения есть.
4. Отдельно автор подчеркивает важность guardrails. Для UI это означает: проверка, что данные валидны. Убедись что AI не прислал недопустимый код. Убедись что поведение безопасно.
5. Огромный акцент на feedback loop: не забывайте писать аишки правильный ли результат она сделала. Даже ваши лайки влияют на ее следующие генерации.
Какие ощущения по рынку?
Anonymous Poll
18%
Ищу работу. Вакансий мало. Нет собесов и офферов
6%
Ищу работу. Вакансий мало, но есть офферы
1%
Ищу работу. На руках > 5 офферов
9%
Не ищу работу. Боюсь начать.
50%
Не ищу работу, но думаю рынку плохо.
16%
Не ищу работу, но задумываюсь. Смотрю оптимистично
Проектирование реальных фич: Feed App ч 1
Продолжаю тему книг.
Среди книг про моб систем дизайн самая практичная — это "Mobile System Design Interview" от ByteByte. Здесь нет философии в пусть и хорошей, но очень большой Mobile System Design.
В книге от ByteByte все главы направлены практику. Только хардкодному проектированию. В первой общедоступной главе разбирают одну из самых частых фичей — ленту новостей.
Вопреки заблуждениям, новостная лента — это не просто список постов.
Я разобью инфу на несколько постов. Первый про общие требования и ожидания.
Лента — это система, которая должна:
- быстро отдавать релевантные посты
- работать для миллионов пользователей
- обновляться почти в реальном времени
- быть стабильной при высокой нагрузке
Ключевая сложность — это как собрать правильные посты и отдать их быстро. Так как обычно ленты делаются для миллионой аудитории.
При проектировании фичи обычно выделяют:
- пагинация
- Низкая задержка. Лента должна открываться быстро
- Масштабируемость.
- Оптимизации для плохого интернета
Есть несколько основных подхода для формирования ленты
1️⃣ Pull model (on-the-fly)
Когда пользователь открывает ленту:
- сервер собирает посты прямо сейчас
- сортирует публикации
- отдает результат
Плюсы
- простая логика
- всегда актуальные данные
Минусы
- медленно при большом числе подписок
- тяжелая нагрузка на сервер
2️⃣ Push model (precomputed feed)
Когда кто-то публикует пост:
- он заранее раскладывается в ленты подписчиков
- при открытии ленты данные уже готовы
Плюсы
- очень быстрая загрузка ленты
- меньше вычислений при чтении
Минусы
- дорого по памяти
- сложнее поддерживать
Автор говорит, что на практике используют гибридный подход.
По мнению автора что хотят услышать интервьюеры:
- ты понимаешь trade-offs (push vs pull)
- ты думаешь про кэш
- ты учитываешь мобильные ограничения
- ты умеешь объяснять архитектуру шаг за шагом
1/3
Продолжаю тему книг.
Среди книг про моб систем дизайн самая практичная — это "Mobile System Design Interview" от ByteByte. Здесь нет философии в пусть и хорошей, но очень большой Mobile System Design.
В книге от ByteByte все главы направлены практику. Только хардкодному проектированию. В первой общедоступной главе разбирают одну из самых частых фичей — ленту новостей.
Вопреки заблуждениям, новостная лента — это не просто список постов.
Я разобью инфу на несколько постов. Первый про общие требования и ожидания.
Лента — это система, которая должна:
- быстро отдавать релевантные посты
- работать для миллионов пользователей
- обновляться почти в реальном времени
- быть стабильной при высокой нагрузке
Ключевая сложность — это как собрать правильные посты и отдать их быстро. Так как обычно ленты делаются для миллионой аудитории.
При проектировании фичи обычно выделяют:
- пагинация
- Низкая задержка. Лента должна открываться быстро
- Масштабируемость.
- Оптимизации для плохого интернета
Есть несколько основных подхода для формирования ленты
1️⃣ Pull model (on-the-fly)
Когда пользователь открывает ленту:
- сервер собирает посты прямо сейчас
- сортирует публикации
- отдает результат
Плюсы
- простая логика
- всегда актуальные данные
Минусы
- медленно при большом числе подписок
- тяжелая нагрузка на сервер
2️⃣ Push model (precomputed feed)
Когда кто-то публикует пост:
- он заранее раскладывается в ленты подписчиков
- при открытии ленты данные уже готовы
Плюсы
- очень быстрая загрузка ленты
- меньше вычислений при чтении
Минусы
- дорого по памяти
- сложнее поддерживать
Автор говорит, что на практике используют гибридный подход.
По мнению автора что хотят услышать интервьюеры:
- ты понимаешь trade-offs (push vs pull)
- ты думаешь про кэш
- ты учитываешь мобильные ограничения
- ты умеешь объяснять архитектуру шаг за шагом
1/3
Почему не надо идти в iOS сейчас
Очередное обсуждение что лучше iOS vs Backend для начала карьеры.
Я, как и многие у нас в чате, уже давно советуют идти в иос не ради денег, а по любви.
Тот же бэкенд уже давно обогнал по вилкам мобилки. А ML улетели в космос.
Комментаторы подсвечивают, что эпоха, когда всем нужны были приложения - уже закончилась. Сейчас безопасная зона только в бигтехах и фаангах. На долгосрочной поддержке.
Очередное обсуждение что лучше iOS vs Backend для начала карьеры.
Я, как и многие у нас в чате, уже давно советуют идти в иос не ради денег, а по любви.
Тот же бэкенд уже давно обогнал по вилкам мобилки. А ML улетели в космос.
Комментаторы подсвечивают, что эпоха, когда всем нужны были приложения - уже закончилась. Сейчас безопасная зона только в бигтехах и фаангах. На долгосрочной поддержке.
Reddit
PatientIll4890's comment on "iOS vs Backend Career"
Explore this conversation and more from the iOSProgramming community
Forwarded from XOR
Android-версию Sora создали 4 инженера за 28 дней — причем 85% кода написал ИИ 😱
OpenAI рассказали, как команда запустила полноценное Android-приложение Sora, активно используя Codex. Итоги вайбкодинга такие:
Один вопрос: как думаете, без ИИ разрабы справились бы быстрее?
😁 — определенно, да
🔥 — нет, вайбкодинг рулит
@xor_journal
OpenAI рассказали, как команда запустила полноценное Android-приложение Sora, активно используя Codex. Итоги вайбкодинга такие:
🟢 Codex (конкретно модель GPT‑5.1-Codex) сгенерировал большую часть фич, переносил логику с iOS, дописывал недостающий код и чинил ошибки сборки. Для скорости разработчики использовали параллельные сессии.🟢 Сами же инженеры больше работали над чётким планом и ТЗ, так как это и ревью всё еще считаются узким местом. Плюс они долго думали, как сделать так, чтобы модель работала автономно круглые сутки.🟢 Кстати, в статье они делятся лайфхаками и интересными замечаниями по вайбкодингу, так что советуем прочитать.
Один вопрос: как думаете, без ИИ разрабы справились бы быстрее?
😁 — определенно, да
🔥 — нет, вайбкодинг рулит
@xor_journal
Please open Telegram to view this post
VIEW IN TELEGRAM
Кстати, кто не помнит, то напоминаю. Сейчас заканчиваю последний курс очно-заочного обучения. Учился 4 года на бизнес-информатика. Пришло время выбирать выпускную квалификационную работу.
Сразу побежал смотреть список тем от универа и нашел самую подходящую для меня: "Применение генеративного ИИ для создания персонализированных образовательных программ"
Будем делать ее с научным руководителем. Интересно как эта работа пробустит меня и чему обучают современные программы универов
Покидаю самые интересные инсайты
А вы поделитесь пожалуйста где подобное по теме уже встречали? В курсах, работе, универе?
Сразу побежал смотреть список тем от универа и нашел самую подходящую для меня: "Применение генеративного ИИ для создания персонализированных образовательных программ"
Будем делать ее с научным руководителем. Интересно как эта работа пробустит меня и чему обучают современные программы универов
Покидаю самые интересные инсайты
А вы поделитесь пожалуйста где подобное по теме уже встречали? В курсах, работе, универе?
Media is too big
VIEW IN TELEGRAM
Ставь 💀 если спортсмен
Ставь🔥 если музыкант
Ставь
Please open Telegram to view this post
VIEW IN TELEGRAM
1 45 35 2
This media is not supported in your browser
VIEW IN TELEGRAM
Записываем нормальный подкаст в нормальном офисе с нормальным светом.
Media is too big
VIEW IN TELEGRAM
Network: Мобильная связь и квота пропускного канала
Зачем думать о 2G интернете? Ведь далеко не все тестят свои апки в этой сети.
Тема мобильной сети — гиперчувствительная. И при этом сильно недооцененная в мобильной разработке.
Недавно я брал консультацию у core команды Яндекс Плеера о том, как оптимизировать видео. Формально разговор был про форматы, коллекции и устройство плеера. Но самым откровенным и очевидным для меня оказался совсем другой пласт — это нетворк-квоты и приоритизация запросов. Казалось бы, очевидно. Но почему мы не задумываемся об этом?
Об этом редко задумываются, когда речь идет об обычной верстке или стандартных апи-запросах. Но в видео все иначе: общий трафик, количество соединений и их приоритет критически важны.
Да, в некоторых крупных компаниях есть платформенные или перфоманс-команды (Авито, Т-Банк), которые глубоко оптимизируют нетворк-слой клиента. Но возникает логичный вопрос: почему обычному мобильному разработчику важно понимать, как работает сеть?
Многие разработчики воспринимают сеть как что-то простое: отправил запрос и получил ответ. В реальности мобильная сеть: нестабильная, медленная, непредсказуемая. Именно поэтому в системном дизайне ей всегда уделяют отдельное место. Игнорировать сеть значит проектировать приложение для идеальных условий, которых у пользователя чаще нет.
О сети можно говорить часами. В этой серии постов я хочу детально разобрать, как работает network в мобильных приложениях и с какими проблемами мы сталкиваемся на практике.
Начнем с базовых, но очень важных сложностей:
1️⃣ Соединение постоянно меняется
Этот вопрос очень важен. Особенно при звонка, которые должны работать даже из парковки и в лифте. Тот же Zoom удивляет многих как работает стабильно с 3G или плохим интернетом, когда же конкуренты, телега или ватсап, еще до замедлений, работали плоховато.
Здесь множество оптимизаций: от хитрых алгоритмов сжатия, то заигрывания с соединениями.
2️⃣ Высокая задержка (latency)
Есть cold и hot ответы. И чаще ответы CDN или других хранилищ нужно заранее "прогревать". Ведь даже при хорошем соединении холодный старт может быть отдавать первый байт долго.
3️⃣ Ограниченный и дорогой трафик
В некоторых регионах, странах, трафик может быть дорогой. В том же Пакистане интернет в 2 раза хуже РФ, но некоторые сервисы уже получают денег больше, чем у себя в стране. Чтобы конкурировать нужно уметь подстраивать под их сеть и быть быстрее конкурентов.
4️⃣ Нетворк квота устройства
Устройство условно на момент соединения имеет доступную пропускную способность 5 Мбит/с. Это общий канал, которым пользуются все процессы сразу: ваше приложение, системные сервисы, другие приложения в фоне. Под наше приложения нет отдельного канала. Все делят один и тот же ресурс.
Если одновременно идут загрузка видео, аналитика, картинки, обработка данных — все запросы конкурируют за один канал. Видео хочет 4 мб/с, аналитика 0.1 мб/с, апи запросы 0.9 мб/с. Канал полностью забит. Если появляется еще один запрос, то появляются лаги и зависания.
И тут еще сложность, что ОС распределяет ресурсы, а не приложение.
В след постах разберем все детальнее
Зачем думать о 2G интернете? Ведь далеко не все тестят свои апки в этой сети.
Тема мобильной сети — гиперчувствительная. И при этом сильно недооцененная в мобильной разработке.
Недавно я брал консультацию у core команды Яндекс Плеера о том, как оптимизировать видео. Формально разговор был про форматы, коллекции и устройство плеера. Но самым откровенным и очевидным для меня оказался совсем другой пласт — это нетворк-квоты и приоритизация запросов. Казалось бы, очевидно. Но почему мы не задумываемся об этом?
Об этом редко задумываются, когда речь идет об обычной верстке или стандартных апи-запросах. Но в видео все иначе: общий трафик, количество соединений и их приоритет критически важны.
Да, в некоторых крупных компаниях есть платформенные или перфоманс-команды (Авито, Т-Банк), которые глубоко оптимизируют нетворк-слой клиента. Но возникает логичный вопрос: почему обычному мобильному разработчику важно понимать, как работает сеть?
Многие разработчики воспринимают сеть как что-то простое: отправил запрос и получил ответ. В реальности мобильная сеть: нестабильная, медленная, непредсказуемая. Именно поэтому в системном дизайне ей всегда уделяют отдельное место. Игнорировать сеть значит проектировать приложение для идеальных условий, которых у пользователя чаще нет.
О сети можно говорить часами. В этой серии постов я хочу детально разобрать, как работает network в мобильных приложениях и с какими проблемами мы сталкиваемся на практике.
Начнем с базовых, но очень важных сложностей:
1️⃣ Соединение постоянно меняется
Этот вопрос очень важен. Особенно при звонка, которые должны работать даже из парковки и в лифте. Тот же Zoom удивляет многих как работает стабильно с 3G или плохим интернетом, когда же конкуренты, телега или ватсап, еще до замедлений, работали плоховато.
Здесь множество оптимизаций: от хитрых алгоритмов сжатия, то заигрывания с соединениями.
2️⃣ Высокая задержка (latency)
Есть cold и hot ответы. И чаще ответы CDN или других хранилищ нужно заранее "прогревать". Ведь даже при хорошем соединении холодный старт может быть отдавать первый байт долго.
3️⃣ Ограниченный и дорогой трафик
В некоторых регионах, странах, трафик может быть дорогой. В том же Пакистане интернет в 2 раза хуже РФ, но некоторые сервисы уже получают денег больше, чем у себя в стране. Чтобы конкурировать нужно уметь подстраивать под их сеть и быть быстрее конкурентов.
4️⃣ Нетворк квота устройства
Устройство условно на момент соединения имеет доступную пропускную способность 5 Мбит/с. Это общий канал, которым пользуются все процессы сразу: ваше приложение, системные сервисы, другие приложения в фоне. Под наше приложения нет отдельного канала. Все делят один и тот же ресурс.
Если одновременно идут загрузка видео, аналитика, картинки, обработка данных — все запросы конкурируют за один канал. Видео хочет 4 мб/с, аналитика 0.1 мб/с, апи запросы 0.9 мб/с. Канал полностью забит. Если появляется еще один запрос, то появляются лаги и зависания.
И тут еще сложность, что ОС распределяет ресурсы, а не приложение.
В след постах разберем все детальнее
Forwarded from Стой под стрелой (Nikita Prokopov)
Почему-то считается, что дизайнеру или программисту круто бы думать об интересах бизнеса, что инженер, который о них думает, ценнее, чем тот, который не думает.
А мне кажется наоборот. У вас уже есть бизнесмен, пусть он о них думает. Зачем компании два бизнесмена, один хороший, другой плохой? Мне кажется, дизайнер должен думать про дизайн, программист — про программы. И целью своей себе ставить сделать хороший дизайн или хорошую программу, а не угодить бизнесу. И вот в их конфликте возникнет некое целое, которое больше частей, их синтез.
Грубо, дизайнера должно заботить, чтобы интерфейс хорошо выглядел и им было удобно пользоваться, а не метрики. Метрики будут заботить бизнес. Если дизайнера будут заботить метрики, и бизнес будут заботить метрики, получится не конфликт и поиск его решения, а повторение и топтание на месте.
Я много раз разговаривал с инженерами, которые жаловались, что бизнес не дает им времени на рефакторинг или сделать нормально. Ну так он и не должен давать! Бизнес интересует бизнес, а вас, как инженера, должно интересовать, как сделать качественно, устойчиво, эффективно. К вам никто никогда снаружи с этим запросом не придет, это должна быть ваша собственная мотивация, ваши собственные ценности, ваши собственные стандарты, понимаете?
И к вам приходят, чтобы вы их продавливали. А бизнес бизнес и без вас сделает.
А мне кажется наоборот. У вас уже есть бизнесмен, пусть он о них думает. Зачем компании два бизнесмена, один хороший, другой плохой? Мне кажется, дизайнер должен думать про дизайн, программист — про программы. И целью своей себе ставить сделать хороший дизайн или хорошую программу, а не угодить бизнесу. И вот в их конфликте возникнет некое целое, которое больше частей, их синтез.
Грубо, дизайнера должно заботить, чтобы интерфейс хорошо выглядел и им было удобно пользоваться, а не метрики. Метрики будут заботить бизнес. Если дизайнера будут заботить метрики, и бизнес будут заботить метрики, получится не конфликт и поиск его решения, а повторение и топтание на месте.
Я много раз разговаривал с инженерами, которые жаловались, что бизнес не дает им времени на рефакторинг или сделать нормально. Ну так он и не должен давать! Бизнес интересует бизнес, а вас, как инженера, должно интересовать, как сделать качественно, устойчиво, эффективно. К вам никто никогда снаружи с этим запросом не придет, это должна быть ваша собственная мотивация, ваши собственные ценности, ваши собственные стандарты, понимаете?
И к вам приходят, чтобы вы их продавливали. А бизнес бизнес и без вас сделает.
Network: 2G, 3G, LTE, 5G
Еще одно заблуждение, что типы мобильных сетей == это просто скорость. В реальности это совершенно разные условия, ограничения и проблемы, с которыми сталкивается приложение.
Иногда 4G может дать больше проблем, чем 3G.
1G
Только голос. В 1G не существовало понятия “скорость интернета” потому что интернета не было.
2G
Во времена какой-нибудь нокиа 3310 это была связь и минимум данных. Скорость была в пределах 100–200 кбит/с
Проблемы: экономия каждого запроса
3G
Расвет мобильного браузинга. iPhone 3G. Социальные сети мой мир, первые фейсбуки и вк. Скорость могла быть на пике до 2–10 мбит/с.
Проблемы: борьба с latency. Первый байт приходит долго. Нужны прогревы запросов.
4G
От 20–100 до 300+ мгбит/с. Покрытие интернета стало массовым. Появились онлайн игры и видеостриминги. Весь трафик перешел из веба в мобилку.
Проблемы: нестабильность сети и появляются потери пакетов. Качество сети прыгает и приходится адаптироваться.
5G
От 100–1000 мбит/с до 10–20 гб/с. Видосы 8к. Автопилоты тачек и роботы. Инфраструктура смарт сити. Мобильный облачный гейминг.
Проблемы: конкурекция за каналы. Один канал делят все приложения. Видео, аналитика, API конкурируют между собой
Каждое поколение сети бросало новые вызовы. В идеале хорошее приложение должно стабильно работать в каждой.
Интересные статьи:
- What are the differences between 2G, 3G, 4G LTE, and 5G networks?
- Exploring Mobile Technology from 1G to 5G
- Ликбез 11-5. Поколения сотовой связи (5G)
Еще одно заблуждение, что типы мобильных сетей == это просто скорость. В реальности это совершенно разные условия, ограничения и проблемы, с которыми сталкивается приложение.
Иногда 4G может дать больше проблем, чем 3G.
1G
Только голос. В 1G не существовало понятия “скорость интернета” потому что интернета не было.
2G
Во времена какой-нибудь нокиа 3310 это была связь и минимум данных. Скорость была в пределах 100–200 кбит/с
Проблемы: экономия каждого запроса
3G
Расвет мобильного браузинга. iPhone 3G. Социальные сети мой мир, первые фейсбуки и вк. Скорость могла быть на пике до 2–10 мбит/с.
Проблемы: борьба с latency. Первый байт приходит долго. Нужны прогревы запросов.
4G
От 20–100 до 300+ мгбит/с. Покрытие интернета стало массовым. Появились онлайн игры и видеостриминги. Весь трафик перешел из веба в мобилку.
Проблемы: нестабильность сети и появляются потери пакетов. Качество сети прыгает и приходится адаптироваться.
5G
От 100–1000 мбит/с до 10–20 гб/с. Видосы 8к. Автопилоты тачек и роботы. Инфраструктура смарт сити. Мобильный облачный гейминг.
Проблемы: конкурекция за каналы. Один канал делят все приложения. Видео, аналитика, API конкурируют между собой
Каждое поколение сети бросало новые вызовы. В идеале хорошее приложение должно стабильно работать в каждой.
Интересные статьи:
- What are the differences between 2G, 3G, 4G LTE, and 5G networks?
- Exploring Mobile Technology from 1G to 5G
- Ликбез 11-5. Поколения сотовой связи (5G)
Опенсорс-библиотека Implicits от Яндекс Браузера: новый шаг в передаче зависимостей Swift
У коллег из яндекс браузера вышла огромная статья на 49 (!) минут чтения(теперь не говорите мне что мои статьи большие) . Много кода и аргументаций зачем пишут свое решение с DI.
Тема DI очень актуальная. Знаю что как минимум 4 компании в этом году занимались переосмыслением и актуализацией своих DI.
Это понятно. Особенно когда у тебя сложный продукт, который стал держать в себе много технологий и модулей: UIKit и SwiftUI для UI слоя. Множество зависимостей и чужих SDK. Кроссплатформы и BDUI.
Почитайте, очень интересно
У коллег из яндекс браузера вышла огромная статья на 49 (!) минут чтения
Тема DI очень актуальная. Знаю что как минимум 4 компании в этом году занимались переосмыслением и актуализацией своих DI.
Это понятно. Особенно когда у тебя сложный продукт, который стал держать в себе много технологий и модулей: UIKit и SwiftUI для UI слоя. Множество зависимостей и чужих SDK. Кроссплатформы и BDUI.
Почитайте, очень интересно
Хабр
Опенсорс-библиотека Implicits от Яндекс Браузера: новый шаг в передаче зависимостей Swift
Когда iOS‑приложение вырастает до сотен тысяч строк, появляется проблема: добавление зависимости в глубокий компонент требует изменений во всех промежуточных функциях. Эти функции...
Ваше отношение к BDUI/SDUI?
С учетом глобального тренда многих компаний хочу разобрать эту тему глубоко. Собрать все мнения и детально разобрать отношение и опыт
С учетом глобального тренда многих компаний хочу разобрать эту тему глубоко. Собрать все мнения и детально разобрать отношение и опыт
Anonymous Poll
10%
Нет опыта. Мнение положительное. Считаю это наше светлое будущее писать 90% на BDUI
39%
Нет опыта. Отношусь скептично по отзывам коллег
6%
Есть большой опыт. Все нравится.
11%
Есть большой опыт. Не нравится.
22%
Есть небольшой опыт. Не нравится.
6%
Есть небольшой опыт. Все нравится
12%
Другое
Подборка статей про BDUI
Хочу сделать глобальный и детальный опрос про использование BDUI. Лично я знаю множество разработчиков с разными мнениями. Кто-то даже использовал данные и опросы из моего канала в реальных докладах. Поэтому будем идти по data driven development. Отбрасывая эмоции, пузыри и слепые догмы. Идем за объективностью.
Но сначала решил собрать самые "честные статьи". И здесь не будет докладов с конференций. Все чаще слышу, что конференции умирают и никто туда не ходит. Почему? Мне отвечают, потому что там мало искренности и правды. Поэтому поищу самые на мой взгляд детальные и наполненные разными мнениями.
1️⃣ Почему BDUI актуален именно сейчас в e‑commerce
Эта статья мне понравилась тем, что можно взглянуть кому именно продается BDUI. А это владельцы е-commerce приложений. А ведь чаще так и есть. Если у тебя сложный лайаут, мессенджер, карты, навигации, то BDUI ложится очень плохо. Но вот если у тебя какой-то маркетплейс, то в целом можно заменить 90% нативщиков.
Вкратце, если вы хотите работать с BDUI, то идите в e-commerce
2️⃣ Server-Driven UI vs Native: Data Sync Speed
Здесь идет классический разбор Server-Driven UI и натива. Особый упор делается, что SDUI сильно зависим от хорошего интернета. Для меня лично является очень странным решением выбирать онли SDUI если у нас в регионах очень плохо с интернетом. Когда же натив лучше работает с оффлайном (некоторые маркетплейсы идут в эту сторону тоже).
Если вам важен оффлайн (мессенджеры, видео, медиа) то тут выбор очевидный — натив. Пусть даже ценой медленного изменения UI.
3️⃣ Пост на реддите "Server Driven UI - is this really worth it?"
На удивление, форумы и чаты, стали новым источником искренности. Туда еще не проник маркетинг и фальш из конференций. Не добралась рука модераторов и программных комитетов, которые обрезают всю неудобность. Что пишут? Много разных мнений. Можно почитать самому.
Хочу сделать глобальный и детальный опрос про использование BDUI. Лично я знаю множество разработчиков с разными мнениями. Кто-то даже использовал данные и опросы из моего канала в реальных докладах. Поэтому будем идти по data driven development. Отбрасывая эмоции, пузыри и слепые догмы. Идем за объективностью.
Но сначала решил собрать самые "честные статьи". И здесь не будет докладов с конференций. Все чаще слышу, что конференции умирают и никто туда не ходит. Почему? Мне отвечают, потому что там мало искренности и правды. Поэтому поищу самые на мой взгляд детальные и наполненные разными мнениями.
1️⃣ Почему BDUI актуален именно сейчас в e‑commerce
Эта статья мне понравилась тем, что можно взглянуть кому именно продается BDUI. А это владельцы е-commerce приложений. А ведь чаще так и есть. Если у тебя сложный лайаут, мессенджер, карты, навигации, то BDUI ложится очень плохо. Но вот если у тебя какой-то маркетплейс, то в целом можно заменить 90% нативщиков.
Вкратце, если вы хотите работать с BDUI, то идите в e-commerce
2️⃣ Server-Driven UI vs Native: Data Sync Speed
Здесь идет классический разбор Server-Driven UI и натива. Особый упор делается, что SDUI сильно зависим от хорошего интернета. Для меня лично является очень странным решением выбирать онли SDUI если у нас в регионах очень плохо с интернетом. Когда же натив лучше работает с оффлайном (некоторые маркетплейсы идут в эту сторону тоже).
Если вам важен оффлайн (мессенджеры, видео, медиа) то тут выбор очевидный — натив. Пусть даже ценой медленного изменения UI.
3️⃣ Пост на реддите "Server Driven UI - is this really worth it?"
На удивление, форумы и чаты, стали новым источником искренности. Туда еще не проник маркетинг и фальш из конференций. Не добралась рука модераторов и программных комитетов, которые обрезают всю неудобность. Что пишут? Много разных мнений. Можно почитать самому.
Зачем ходишь на конференции и согласен ли, что они умирают?
Anonymous Poll
9%
Хожу за докладами. Не согласен, что вымирают
12%
Хожу за нетворком. Не согласен, что вымирают
10%
Хожу за докладами. согласен, что вымирают
13%
Хожу за нетворком. согласен, что вымирают
29%
Ходил, перестал ходить.
17%
Никогда не был на конференциях и не хочу
19%
Никогда не был на конференциях, но хочу побывать
8%
Другое
Проектирование реальных фич: Feed App ч 2
В первой части мы поговорили про требования и про главный выбор: pull vs push. Во второй спускаемся на уровень "а что конкретно проектируем?".
Какие экраны, какие API, какие модели, как пагинировать, как устроить клиент, чтобы все было быстрым и живым.
1️⃣ Все начинается с уточнения скоупа работ:
- Feed: бесконечный скролл, лайк и шаринг, тапы, детальная страница, форма для создания поста.
- Create Post: текст + вложения (картинки/видео)
- Post Detail: полный контент + действия
И отдельно важная скрытая фича, которую часто ждут на интервью — это prefetching (подгрузить посты заранее, чтобы открыть ленту быстрее)
2️⃣ API
Дальше идем в проектирования API-контракта. Смысл API-дизайна в интервью простой. Вот вы договорились как клиент и сервер будут говорить, и дальше не спорите “а откуда это берется”. Здесь очень важно не перезагружать данными модели. Нужно их обрезать чтобы не перегружать сеть; не убивать память/CPU клиента; не тянуть тяжелые вложения без необходимости
Особенно когда с интернетом беда.
3️⃣ Пагинация
Для ленты почти всегда выбирают cursor-based pagination. Я еще делился прикольным докладом про пагинацию тут.
Почему offset не идеальный вариант:
- лента часто обновляется: пока ты листаешь, сверху приходят новые посты, а окно может смещаться
- чем глубже offset, тем хуже производительность запросов на больших объёмах данных
Cursor-подход лучше, потому что опирается на индексируемое поле и дает стабильный следующий блок даже если сверху добавились новые посты
4️⃣ Архитектура клиента: слои и поток данных
Классический подход в структуре — разделять на слои
UI layer — это экраны (Feed / Detail / Create). А за состояниями овечаются ViewModel и Presentor. Навигация должна быть в отдельном компоненте.
Data layer — желательно разделять все на репозитории, data source'ы, а медиа хранить на CDN.
5️⃣ Offline-first и “Single Source of Truth” на клиенте
В той самой книге по проектированию автор говорит, что для мобильной ленты это прям must-have, потому что сеть бывает медленная, нестабильная и пропадает во время скролла. Автор советует:
- все, что пришло с бэка, нужно сразу писать в локальную БД
- UI читает данные из локальной БД, даже когда интернет есть
- при оффлайне показываем кэш и аккуратно сообщаем, что обновиться не можем. Это и есть "Backend -> Local Storage -> UI" как единый стабильный пайплайн
✅ Что интервьюер хочет услышать?
- Нужно отдавать в ленту Preview, чтобы не тянуть тяжелые данные
- Пагинация cursor, потому что лента часто обновляется
- Клиент offline-first, local DB — SSOT, UI читает из нее
- Статику раздаем через CDN, чтобы ускорить ленту и снять нагрузку
В первой части мы поговорили про требования и про главный выбор: pull vs push. Во второй спускаемся на уровень "а что конкретно проектируем?".
Какие экраны, какие API, какие модели, как пагинировать, как устроить клиент, чтобы все было быстрым и живым.
1️⃣ Все начинается с уточнения скоупа работ:
- Feed: бесконечный скролл, лайк и шаринг, тапы, детальная страница, форма для создания поста.
- Create Post: текст + вложения (картинки/видео)
- Post Detail: полный контент + действия
И отдельно важная скрытая фича, которую часто ждут на интервью — это prefetching (подгрузить посты заранее, чтобы открыть ленту быстрее)
2️⃣ API
Дальше идем в проектирования API-контракта. Смысл API-дизайна в интервью простой. Вот вы договорились как клиент и сервер будут говорить, и дальше не спорите “а откуда это берется”. Здесь очень важно не перезагружать данными модели. Нужно их обрезать чтобы не перегружать сеть; не убивать память/CPU клиента; не тянуть тяжелые вложения без необходимости
Особенно когда с интернетом беда.
3️⃣ Пагинация
Для ленты почти всегда выбирают cursor-based pagination. Я еще делился прикольным докладом про пагинацию тут.
Почему offset не идеальный вариант:
- лента часто обновляется: пока ты листаешь, сверху приходят новые посты, а окно может смещаться
- чем глубже offset, тем хуже производительность запросов на больших объёмах данных
Cursor-подход лучше, потому что опирается на индексируемое поле и дает стабильный следующий блок даже если сверху добавились новые посты
4️⃣ Архитектура клиента: слои и поток данных
Классический подход в структуре — разделять на слои
UI layer — это экраны (Feed / Detail / Create). А за состояниями овечаются ViewModel и Presentor. Навигация должна быть в отдельном компоненте.
Data layer — желательно разделять все на репозитории, data source'ы, а медиа хранить на CDN.
5️⃣ Offline-first и “Single Source of Truth” на клиенте
В той самой книге по проектированию автор говорит, что для мобильной ленты это прям must-have, потому что сеть бывает медленная, нестабильная и пропадает во время скролла. Автор советует:
- все, что пришло с бэка, нужно сразу писать в локальную БД
- UI читает данные из локальной БД, даже когда интернет есть
- при оффлайне показываем кэш и аккуратно сообщаем, что обновиться не можем. Это и есть "Backend -> Local Storage -> UI" как единый стабильный пайплайн
- Нужно отдавать в ленту Preview, чтобы не тянуть тяжелые данные
- Пагинация cursor, потому что лента часто обновляется
- Клиент offline-first, local DB — SSOT, UI читает из нее
- Статику раздаем через CDN, чтобы ускорить ленту и снять нагрузку
Please open Telegram to view this post
VIEW IN TELEGRAM