Обновить
163.09

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

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

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

Swift Concurrency и CoreBluetooth: как построить современный BLE-сервис

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

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

Я взял на себя часть по iOS и попробовал применить новый Swift Concurrency поверх старого CoreBluetooth. В этой статье расскажу, какие подводные камни вылезли при совмещении structured concurrency и callback-ориентированного API, как их обойти и на что стоит обратить внимание, если вы тоже решите «прикрутить» современные async/await к старому API.

Читать далее

Как мы создали курс по разработке мобильных игр, в котором Java оживает, а наставник становится другом

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

В этом году мы запустили новую образовательную программу «Разработка мобильных игр» для школьников 8–9 классов — и она получилась по-настоящему особенной. Это не просто очередной курс по программированию или геймдеву: мы объединили код, персонажей, физику и истории в одно целое, сделав обучение настоящим приключением. Вместо сухих лекций, ребята начинают стажировку в виртуальной гейм-студии, где их сопровождает наставник Максим. Он не просто рассказывает про программирование, а делится эмоциями, личными историями и шутками про баги. Объясняет сложные вещи «на пальцах», вместе с учениками разбирает задачки и отвечает на вопросы в формате встреч (лонгридов) с примерами кода и иллюстрациями. Такая история «по ту сторону экрана» сильно вовлекает учеников: сторителлинг помогает им лучше усваивать материал и понимать, зачем всё это нужно.

Читать далее

zenplan: как я сделал себе карманного помощника для целей и задач

Время на прочтение2 мин
Количество просмотров6.5K

Привет, Хабр! 👋

Меня зовут Денис, я продуктовый аналитик, и как многие из нас, я постоянно разрываюсь между проектами, встречами, идеями и личными задачами. Список дел разрастается быстрее, чем успеваешь их выполнять, а заметки и цели теряются между Google Docs, Notion и стикерами на рабочем столе.

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

Читать далее

Натив, Flutter или KMP — выбираем мобильный фреймворк для e-commerce

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

В 2025 году уже недостаточно просто выпустить приложение — оно должно быстро адаптироваться к изменениям рынка, удобно и эффективно интегрироваться с новыми технологиями и обеспечивать хороший пользовательский опыт. Но что лучше выбрать: нативную разработку, кроссплатформу, или Kotlin Multiplatform? 

Александр Кияйкин, CTO компании по разработке мобильных приложений CleverPumpkin, разбирает эти три подхода и сравнивает плюсы и минусы каждой технологии. 

Читать далее

Thing — Model — View — Editor

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров1K

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

Содержание этого документа интересно и с исторической точки зрения (а как там “деды” воевали программировали), так и в плане уточнения некоторых современных представлений об этом паттерне и программной архитектуре в целом.

Иллюстрации по максимуму сохранены как в оригинале. По ходу есть сноски с подробностями и ассоциации редактора в конце.

СУЩНОСТЬ-МОДЕЛЬ-ВЬЮ1-РЕДАКТОР

на примере из системы планирования2


Кому: LRG3

От: Тригве Реенскауг4

Файл: [IVY]<Reenskaug>SMALL>TERMINOLOGY2.DOC

Дата: 12 мая 19795

Цель данной заметки - исследовать метафоры thing-model-view-editor через последовательный набор примеров. Все примеры взяты из моей системы планирования и иллюстрируют вышеуказанные четыре понятия. Все примеры были реализованы, хотя и не в рамках чистой структуры классов, описанной здесь. Метафоры соответствуют real world-Model-view-Tool, предложенным в заметке о требованиях DynaBook ([Ivy]<Reenskaug>DynaBook.doc).


THING (СУЩНОСТЬ)

ОПИСАНИЕ ТЕРМИНА

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

ПРИМЕР: КРУПНЫЙ ПРОЕКТ

Сущность здесь - это крупный проект. Это может быть проектирование и строительство большого моста, электростанции или морской нефтедобывающей платформы.

Читать далее

Как упростить разработку: опыт и размышления (компиляция из моей переписки)

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров988

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

Азазель предложил идею, которая кажется логичной и полезной:

Читать далее

Поддержка PWA в Аврора 5.2

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

В версии ОС «Аврора» 5.2 наш браузер получает долгожданную поддержку Progressive Web Apps (PWA) - технологии, которая позволяет веб-приложениям выглядеть и работать как полноценные нативные приложения.

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

Меня зовут Тимур Валеев, я руковожу командой, которая занимается развитием браузера для ОС «Аврора», и сегодня мы разберем, как это было реализовано.

Читать далее

Мобильная разработка за неделю #601 (1 — 7 сентября)

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

В новом дайджесте «стеклянный мир» iOS 26 и Flow-контейнеры в Compose, Android Glance Widget и жизненный цикл UIViewController 2025, лучшие практики агентного программирования, как замедлить программу и почему это может быть полезно, приложения, вышедшие в июле, и заработавшие больше $50,000, и многое другое. Заходите!

Читать далее

Next.js меня окончательно достал

Время на прочтение9 мин
Количество просмотров17K

Наконец, настал этот момент, и я решился написать статью. Давно хотел, но как-то не хватало мотивации. А ведь, знаете, как говорят: «гнев — лучший мотиватор». Есть же такое выражение?

Предыстория

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

И теперь перед нами квест — найти и настроить механизм логирования для продакшена. Будет нелегко, но нам как бы не привыкать.

Читать далее

Мой путь новичка в разработке: FreeSpace — мобильное приложение для любителей космоса

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

Меня зовут Маша, я выпускница «IT Школы Samsung». Хочу рассказать о своём проекте — мобильном приложении FreeSpace, которое объединяет новости о космосе, интерактивную карту и сообщество энтузиастов. Это не просто рассказ о коде, но и история моего пути в Android-разработке.

Читать далее

Календарь домашних тренировок — 10 улучшений в пет-проекте

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.4K

5 месяцев назад я публиковал материал про пет-проект календаря домаших тренировок. Сегодня хочу рассказать, что было сделано мной за прошедшее с тех пор время.

Самим приложением пользуюсь регулярно. На главной странице для незарегистрированных пользователей в качестве примера как раз показывается моя статистика. Помимо меня есть ещё 53 зарегистрированных пользователя с подтверждённым email.

https://github.com/dergunovs/fit - исходный код приложения
https://vkvideo.ru/playlist/15313879_11 - видео про разработку

Frontend: Typescript, Vite, Vue, Tanstack Query, Vitest, Vue I18n, Tauri
Backend: Typescript, Fastify, Mongoose, MongoDB, Swagger

Публикация приложения в RuStore

С помощью Tauri добавил генерацию формата APK. Зарегистрировался в RuStore в качестве разработчика, заполнил поля с описанием, сделал скриншоты. Модерация прошла очень быстро. Теперь приложение можно удобно скачивать и обновлять. Сам APK файл весит около 10 мегабайт. За 4 месяца с момента публикации в RuStore оттуда было 65 установок приложения.

Читать далее

Как сделать GitLab CI/CD вашим лучшим другом для сборки и доставки Flutter приложений. Часть 2

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров1.9K

Flutter & GitLab CI/CD. Сборка и подписание мобильных приложений

Привет! Меня зовут Данил Абдрафиков, я мобильный разработчик в компании TAGES. Эта статья является продолжением первой части руководства по настройке GitLab CI/CD для Flutter приложений, в котором мы подробно разобрали настройку физической машины и подготовили GitLab Runner для работы. Теперь, когда инфраструктура готова, перейдем к самому интересному – автоматизации сборки и подписания мобильных приложений.

Готовы превратить сборку мобильных приложений из рутинной задачи в полностью автоматизированный процесс? Тогда начинаем!

Читать далее

Жизненный цикл UIViewController в 2025 году: что изменилось и что устарело

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

В 2022 году я написал статью «Жизненный цикл UIViewController», где подробно разобрал порядок вызова методов и основные сценарии работы с ними.

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

Читать далее

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

Android. Glance Widget. Часть 2. Конфигурация данных для виджета

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров719

Рассмотрим, как добавить конфигурационную activity для виджета, как сохранять, доставать и применять настройки.

Читать далее

Взлом через картинку в Apple: уроки громкой уязвимости для разработчиков

Время на прочтение7 мин
Количество просмотров4.6K

Мир устроен так, что самые опасные угрозы обычно скрываются там, где их меньше всего ожидают. Мы в ИБ привыкли к фишинговым письмам и вирусам, но редко думаем, что обычная картинка в мессенджере может превратиться в инструмент шпионажа. Именно поэтому мы решили рассказать о громкой уязвимости PT-2025-34177 (CVE-2025-43300) – zero-day, которая, говоря простыми словами, позволяет злоумышленнику совершить атаку через вредоносную картинку, открытую пользователем на своем устройстве. И на этом примере показать, почему безопасность разработки — это не абстрактная теория, а жизненно важная практика для бизнеса, разработчиков, обычных пользователей и нас самих. Да-да, мошенники пишут даже сотрудникам службы ИБ, и картинки тоже отправляют.

Читать далее

«Стеклянный мир» iOS 26. Адаптируем приложение под новые гайдлайны

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

Уже скоро релиз iOS 26 и обновления SDK приложений. Apple снова вносит корректировки, а разработчики и дизайнеры снова подстраиваются. У текущих приложений будет переходный период, но вопрос с обновлением интерфейсов рано или поздно настанет и придется адаптировать под новый SDK и стиль Liquid Glass, чтобы продукт выглядел современно.  

Наш дизайнер интерфейсов Фёдор Миронов поделится наблюдениями о новых гайдлайнах и расскажет, какие изменения принесёт Liquid Glass. А ещё покажет несколько примеров обновления интерфейсов тестового приложения и нашего финтех-проекта Moneon.

Читать далее

Claude Code: лучшие практики агентного программирования

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров13K

Иногда действительно лучше промолчать, чем писать что-то ради «галочки». На днях мы в команде вспомнили о методичке Anthropic по Claude Code и поняли —  добавить к ней практически нечего, конечно, кроме наших советов об использовании этого инструмента. Все подходы, которые появились у нас с помощью этой практики, теперь вошли в официальные гайды лидеров в области ИИ-агентов. 

В общем, если вы хотите разобраться в агентном программировании — не проходите мимо этого перевода с комментариями руководителя отдела Flutter-разработки Surf Марка.

Читать дальше

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

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

Вы заглядываете в историю изменения цены на вайлдберриз? Кстати, раньше она и на Яндекс Маркете была, но они её убрали.. 

Так вот, я частенько смотрел раньше на этот график с историей цены, пока не сделал свой мониторинг цен, а как сделал - естественно меня пробрало любопытство проверить, сойдутся ли данные. 

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

Получается, они показывают нам какую-то фантомную цену за последние 90 дней?.. Нашёл пример товара с графиком (он ещё и не для всех товаров показывается), и что мы видим:

Читать далее

События, которым можно доверять: выстраивание процесса работы с разметкой приложения с точки зрения аналитика

Время на прочтение16 мин
Количество просмотров1.7K

Привет! Меня зовут Николай Олигеров. Сейчас я работаю аналитиком данных в Яндекс Путешествиях, а до этого я был продуктовым аналитиком в Лавке — мой рассказ будет именно про неё.

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

Читать далее

Android. Glance Widgets. Начало

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

Android. Glance widgets.

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

Статья для тех, кто хочет изучить Glance виджеты на Android. Посмотреть на существующие проблемы, про подводные камни и увидеть способы их решения. Полезно делиться опытом

Читать далее

Вклад авторов