Обновить
512K+

Разработка мобильных приложений *

Android, iOS, Windows Phone и прочие

135,95
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Я написал кэш для API на Go за 120 строк кода — и PostgreSQL перестал быть узким местом (ускорение в 7 раз)

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели6.3K

Если API начинает тормозить, первое решение обычно очевидно — добавить Redis. Но иногда оказывается, что проблема гораздо проще. В одном из сервисов PostgreSQL начал упираться в повторяющиеся запросы. Одни и те же данные запрашивались тысячами клиентов. Практически каждый HTTP-запрос заканчивался одинаковым SQL-запросом. Любопытство победило — вместо готового решения был написан небольшой кэш прямо внутри сервиса. На это ушло примерно полчаса. Результат оказался неожиданным: некоторые эндпоинты ускорились почти в 7 раз. Вот, почему это произошло и как работает такая схема.

Читать далее

Новости

Я перестал пользоваться Anki и сделал своё приложение для изучения языков

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели11K

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

В итоге я сделал своё приложение, где попытался закрыть все эти боли. За 5 месяцев его скачали 1000+ человек.

Читать далее

Отладка iOS-приложений на практике: 3 реальных бага

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели4.1K

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

Читать далее

Интеграция автоматической установки eSIM на Android

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели9.1K

Я люблю свою работу, потому что на удивление для меня с годами она становится все более нетривиальной и увлекательной. Моя история внедрения автоматической установки eSim была интересна тем, что разрабатывалась вслепую без возможности протестировать функционал на момент разработки. О eSIM и о своей истории и пойдет речь в данной статье.

Узнать подробности

Как заставить Android Studio ругаться на код по вашим правилам: создаем пользовательские Lint и Detekt

Уровень сложностиСложный
Время на прочтение22 мин
Охват и читатели6.5K

Привет, Хабр! На связи Алина, старший Android-разработчик в команде Инвестиций «Совкомбанк Технологии». Сегодня поговорим о том, как заставить Android Studio самостоятельно следить за порядком в коде – без ручных проверок и без вечных напоминаний в командном чате.

В этой статье мы создадим практические правила для инструментов статического анализа кода и разберем, как внедрить их в проект. На примере lint рассмотрим контроль архитектуры пакетов и обязательную документацию с QuickFix, а на примере detekt – проверку неизменяемого состояния представления без Android-зависимостей и миграцию с RxJava на Coroutines.

Читать далее

Ой, всё упало: 4+ способа достать креш-отчет с iOS-приложения

Уровень сложностиСредний
Время на прочтение25 мин
Охват и читатели4.8K

Привет, Хабр! На связи снова Максим из ATI.SU. В прошлой статье мы научились собирать логи на iOS устройствах разными способами и теперь для нас не вопрос разобраться, почему кнопка не нажимается, а данные не грузятся.

Но бывают ситуации куда страшнее. Вы запускаете приложение, а оно... тут же исчезает. Или вы работали в приложении, раз... и вы видите домашний экран. А еще приложение может так зависнуть, что помогает только полная перезагрузка самого устройства. Все это — его величество креш (a.k.a. краш, крэш, crash, вылет, сбой, падение, аварийное завершение).

Если привести аналогии, то логи — это жалобная книга, а креш‑отчет — это заключение судмедэксперта. В нём написано точное время смерти, причина и состояние памяти устройства в последний момент жизни приложения.

Для тестировщиков поймать креш и не допустить его до прода — это как для сапёра обезвредить мину раньше, чем на неё наступят. Работу можно сделать и после взрыва, но цена вопроса уже совсем другая. Сегодня я расскажу о 4+ проверенных способах собрать информацию о креше: от уже знакомых нам способов из предыдущей статьи до продвинутых систем мониторинга.

Начать вскрытие

Почему многие неверно реализуют MVVM или способы создания абстракций

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели5.1K

Привет, Хабр! Меня зовут Кирилл Маканков, я iOS-разработчик в ПСБ.  

Сегодня хочу поговорить про особенности реализации MVVM. Не с практической, а с теоретической стороны. С практической стороны этот архитектурный шаблон давно уже изучен вдоль и поперёк. А вот теоретических исследований, особенно применимых к Swift (и в общем, и к SwiftUI в частности), не так уж и много. Давайте вместе попробуем закрыть этот пробел и обосновать с теоретической точки зрения те или иные вариации реализаций в нашей ежедневной работе. Мобильным разработчикам на ObjC, Java и Kotlin данное исследование и обсуждение тоже будет полезно. Присоединяйтесь!

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

Читать далее

Мобильное приложение Ватерпас: DewDrop. Реальная история…

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели5.8K

Если вы ранее работали с мобильным приложением DogPlanner, то вы, наверное, уже знакомы с робопёсом Роби. Но в любом случае, позвольте рассказать вам его историю. Роби живёт на Марсе... ходит молва, что он был собран кем-то из деталей первого в истории марсохода Sojourner. Он изучает красную планету, да и, по возможности, всю вселенную через сигналы, приходящие из космоса.

Читать далее

Вы считаете ИИ-ускорение неправильно, сливая бюджет в трубу, пока 7 из 10 проектов умирают ещё на этапе пилотов

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели7.5K

Компании спускают миллиарды на хайповые инструменты разработки, надеясь купить «волшебную таблетку», но вместо неё получают лишь неконтролируемый хаос в процессах. 

Мы взяли секундомер и устроили жёсткий тест четырём нашим производственным направлениям: мобилке на Native и Flutter, аналитике и QA. Дали командам доступ в Cursor и Claude Code, чтобы вытащить на свет реальные цифры. По итогу — разрыв между цифрами и действительностью оказался шокирующим. 

Читать далее

Пишем декларативный Package.swift: DSL для модульной архитектуры iOS проекта

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5K

Swift Package Manager отлично подходит для модульной архитектуры, но по мере роста проекта Package.swift быстро превращается в длинный список строковых зависимостей.

В статье показываю, как превратить Package.swift в типобезопасный DSL на Swift:

убрать строковые зависимости
автоматически генерировать feature-модули
зафиксировать архитектурные правила на уровне компиляции

Читать далее

Как мы сделали автогенерацию контента для риелторов в мобильном приложении

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.3K

Всем привет! Мы добавили новый функционал в мобильном приложении цифровой платформы для риелторов, который позволил создавать продающий контент для социальных сетей и генерировать новые лиды. 

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

Читать далее

Искусство просить отзывы: как легально поднять рейтинг до 4.9 и не взбесить пользователя

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5.1K

Вы открываете приложение, чтобы быстро проверить баланс или забронировать стол, и тут же получаете в лицо: «Вам нравится наше приложение? Оцените нас!». Ваша реакция? В лучшем случае - машинальное нажатие на крестик, в худшем - удаление. Моя личная боль - открываешь банковское приложение для оплаты на кассе по СБП и получаешь аж три баннера один за другим на экран. Я не хочу прямо сейчас оформить кредит, не хочу оценивать ваши продукты. Я только открыл приложение, я покупки оплатить хочу. И такое поведение если уж не каждый запуск, то каждый второй точно.

В 2026 году Apple и Google стали еще жестче фильтровать накрутки, а пользователи - еще чувствительнее к прерыванию их «флоу». Тем не менее, рейтинг 4.9 - это не магия, а математика, психология и вовремя вызванный системный метод.

Давайте попробуем разобраться, как построить систему сбора отзывов, которая не превращает ваш продукт в назойливого попрошайку, и почему иногда лучший способ поднять рейтинг — отправить пользователя в чат поддержки.

Продолжим

Google убивает независимый Android. Обращение и 19 аргументов против насильной регистрации разработчиков

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели13K

https://keepandroidopen.org/ru/
https://keepandroidopen.org/open-letter/
https://www.change.org/p/stop-google-from-limiting-apk-file-usage?recruiter=1370041382&recruited_by_id=fddec6e0-0e30-11f0-a55d-cd0eb0fd0ac4

upd: добавил аудио-версию.

Уважаемая команда Google и руководство Android, я пишу вам не как случайный пользователь, а как человек, который уже больше 15 лет выбирает Android именно потому, что он был открытой платформой. Платформой, которая отличалась от яблочной тюрьмы iOS тем, что не требовала разрешения корпорации, чтобы я мог установить любое приложение, помочь другу с установкой или поддержать независимый проект. Сегодня я вынужден выразить глубокое разочарование, граничащее с чувством предательства.

С сентября 2026 года вы вводите обязательную централизованную регистрацию разработчиков для всего распространения приложений на Android — даже вне Google Play. Чтобы установить приложение через сайт, APK-файл, альтернативный магазин или просто передать его другу, разработчик должен:

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

Иначе приложение просто не установится на сертифицированных устройствах. Это не «улучшение безопасности». Это радикальная смена модели Android с открытой на закрытую.

Читать далее

Ближайшие события

Прямая трансляция во Flutter через WebCodecs: как пришлось написать свой декодер

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели5.4K

Когда live-видео приходит как сырой H.264 поток через WebSocket, стандартные Flutter-плееры перестают работать.

В этой статье я разбираю, почему готовые решения не подошли и как я пришёл к необходимости реализации собственного декодера на C++ с использованием FFmpeg.

Читать далее

Мобильная разработка за неделю #623 (10 — 15 марта)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.5K

В этом дайджесте приложение без MVC или MVVM, починка анимации в LazyColumn и эффект размытия движения для вращающегося колеса, 20 приложений за 20 дней, отчет о приложения с подпиской 2026 от RevenueCat, Code Review для проверки ИИ-кода и многое другое. Заходите!

Читать далее

Как я пишу прибыльные приложения в одиночку (Идея + Build + Marketing Guide)

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели27K

Научился программировать в 30 лет — и создал приложение для правительства Великобритании. Рассказываю всё: как найти идею, выбрать стек, использовать ИИ и продвинуть продукт без команды и бюджета.

Читать далее

Когда фронтенд перестаёт быть игрушкой: пишем собственный реактивный движок на JavaScript

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели9.6K

Почти каждый фронтенд-разработчик однажды задаётся вопросом: что на самом деле происходит внутри современных фреймворков. Почему изменение переменной автоматически обновляет интерфейс? Как библиотека понимает, что именно нужно перерисовать?

Читать далее

Эволюция пушей: как мы превратили полезный инструмент в цифровой абьюз и почему гранулярность — наш единственный выход

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели5.4K

Помните времена, когда пуш-уведомление реально что-то значило? Телефон вибрировал, и ты точно знал: случилось что-то важное. Такси подъехало. Деньги списались. Начальник написал что-то срочное (ладно, обычно не срочное, но хотя бы по делу).

Это был 2016 год.

На дворе 2026-й. Шторка уведомлений среднего пользователя превратилась в мусорный бак, куда маркетологи сбрасывают свои KPI с маниакальным упорством.

Мы умудрились взять гениально простой инструмент доставки ценности и превратить его в систему психологического давления. Давайте разберем, где конкретно мы свернули не туда, и как разработчику не участвовать в этом цирке с конями.

Продолжим

Когда код начинают писать машины: что реально изменится в программировании

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели8.5K

Кажется, мы приближаемся к моменту, когда генерация кода перестанет быть игрушкой и станет обычным инструментом разработки. Уже сейчас можно попросить модель написать API, SQL-запрос или даже кусок архитектуры сервиса. Но что будет дальше, когда такой подход станет стандартом? Изменится ли профессия разработчика или просто появится ещё один инструмент вроде IDE?

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

Пару месяцев назад я решил провести небольшой эксперимент. Попробовать писать сервис почти полностью через генерацию кода. Не просто отдельные функции, а прямо весь сервис: API, базу данных, обработчики.

Честно говоря, в какой-то момент стало немного странно. Ты вроде разработчик, но код пишет не совсем ты.

Возникает ощущение, будто ты больше архитектор или редактор кода.

И тут появляется вопрос.

Если генерация станет стандартом, кем вообще будет программист?

Тем, кто пишет код?
Тем, кто проверяет код?
Или тем, кто придумывает системы, которые этот код потом генерируют?

Попробую поделиться наблюдениями.

Читать далее

Приложение падало на старте. Мы теряли 5% пользователей. Разбор кейса FanBattle

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели7.1K

После одного из релизов у FanBattle приложение перестало открываться у части пользователей. Проблема затронула около 5% аудитории. Баг исправили быстро, но пользователи не могли даже узнать, что вышла новая версия — приложение падало раньше, чем успевал появиться интерфейс.

Разбираем, как команда решила проблему через раннюю инициализацию SDK и force update.

Читать далее
1
23 ...