Обновить
157.5

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

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

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

Умеет ли вы продавать код?

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

В сфере IT есть сильное профессиональное искажение. Айтишникам кажется, что продукт, который они продают это код. Но в головах их клиентов мир выглядит иначе. Заказчики покупают у айтишников не репозиторий на гитхабе или докер-образ, поднятый на VPS-ке. Они покупают решение своих бизнес-задач. Причём, заметьте, что в этой покупке весь риск лежит на стороне того, кто платит за работу. Потому что гарантия айтишника, что он качественно справится со своей задачей вовсе не гарантирует клиенту, что его бюджет будет потрачен эффективно и его проблема будет решена. Решена именно как бизнес-задача, а не как какая-то другая. То есть, что на выходе от всех затеянных телодвижений будет получен ощутимый положительный финансовый результат.

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

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

Читать далее

Я написал свой VPN-клиент для Android. Зачем, если их сотни, и что скрывается под капотом?

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

Каждый раз, нажимая кнопку «Connect» в очередном VPN-приложении, я ловил себя на мысли: а что там, под капотом? Как эта магия на самом деле работает на уровне Android? Вокруг сотни готовых решений, но простое пользовательское любопытство переросло в профессиональное: мне захотелось не просто использовать, а понять. Понять, какие подводные камни скрывает VpnService, как реализовать весь цикл от авторизации до поднятия защищённого туннеля и что на этом пути может пойти не так.

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

Так родилась идея этого проекта — создать свой, пусть и простой, VPN-клиент. Это не попытка сделать коммерческий продукт, а скорее исследовательское погружение, мой личный "челлендж" и способ разложить всё по полочкам.

Заглянуть под капот

Lokilizer — бесплатный инструмент для перевода приложений с двух языков на любые другие

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

Наш кейс: в приложении есть русский (наш нативный) и английский языки. Надо быстро и просто добавлять другие (по запросам от клиентов). В файлах с переводами был хаос: дублирование строк, конкатенация вместо плейсхолдеров, разный порядок строк в файлах переводов для ru/en, висячие пробелы и многое другое.

Я решил написать вспомогательный инструмент, который помог решить все эти проблемы. Сейчас мы добавляем новый язык буквально за 40 минут и 2$. Все получилось настолько хорошо, что решил причесать и выложить в open-source

Главная фишка: перевод на новые языки делается сразу с 2х языков (в нашем случае с ru и en) что на практике делает его супер-качественным

Читать далее

Функциональное программирование в Android. Теория категорий и DI

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

Кульминация цикла о функциональщине в Android! Сегодня изучаем чистые функции — ещё один важный принцип функционального программирования.

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

Читать далее

Как Android-разработчик в iOS погружался: мой опыт внедрения Kotlin Multiplatform

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

Привет, Хабр! Меня зовут Артем Клименко, я Lead Android-разработчик в МТС Web Services, занимаюсь продуктом Membrana Kids.

Продукт создавали нативно на каждую платформу, без пересечения кода. В начале года у нас ушло несколько iOS-разработчиков, из-за чего замедлилась поставка новых функций на обеих платформах. Мы решили, что это повод внедрить наконец кроссплатформенную разработку и выровнять поставку фич на обеих платформах. В этом материале расскажу, почему мы остановились на KMP, как погружались в iOS c опытом в Android и как прошло внедрение этого фреймворка. Спойлер: быстрее и проще, чем мы думали.

Читать далее

Часть 2. GoForm — как не страдать с формами во Flutter

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

Устали от бесконечных TextEditingController и GlobalKey? Замучили проблемы с асинхронной валидацией? Добро пожаловать в мир GoForm — библиотеки, которая наконец-то превратит создание форм из пытки в удовольствие!

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

Читать далее

Мобильная разработка за неделю #592 (30 июня — 6 июля)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.4K
В новом выпуске понимаем и улучшаем производительность SwiftUI, решаем проблему «деградации» YouTube на Android, определяем потолок в разработке, разбираем большую ложь чистой архитектуры, смотрим на рост цифровой веры и многое другое. Заходите!

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

Стартап за 100 дней. Неделя первая. Аналитика

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

Привет, я Дима и хочу сделать полноценный стартап за 100 дней, а именно нескучное приложение для похудения. У меня за плечами опыт создания приложения с 20 МЛН установок и номинацией «Приложение года» от Google. Смогу ли я повторить успех — покажет время, а пока буду делиться процессом создания, инструментами и походами, которые сам использую.

Читать далее

Эффекты в Jetpack Compose, лежащие на поверхности

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

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

Читать далее

2D-скролл во Flutter

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

Да кто такой этот ваш 2D-скролл? Зачем он нужен, если ты не делаешь аналог excel? На самом деле, двунаправленная прокрутка нужна в огромном количестве сценариев использования мобильных приложений, в виде таблицы можно представить самые разные сущности — как, например, наш видеоредактор. 

Есть только одна маленькая проблема: видеоредактор Yappy кроссплатформенный, написан на Flutter, а до недавнего времени команда фреймворка предлагала только один способ реализовать 2D-скролл — очень не производительный. В статье рассказываю, в чём была была загвоздка, что есть во Flutter сейчас и каких впечатляющих результатов можно добиться собственной реализацией. 

Читать далее

Статья 4: Готовим MVI

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

Серия статей с очередным разбором MV* шаблонов, но с интересными деталями
Даже опытные разработчики смогут найти что-то новое для себя

Это четвертая статья из серии,
в которой разбираем как собирается MVI и что же такое Model

Статья 4: Готовим MVI
- 🧩 Собираем MVI-пазл воедино
- 🤔 А что если вообще написать свою реализацию MVI?
- 📜 Ты так и не понял, что такое Model?

На вкус и цвет салаты разные

Включаем VoLTE на Pixel 9

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

О, сколько нам открытий чудных
Готовит просвещенья дух

В данной статье пойдет речь о VoLTE, о Pixel 9, и о том, как включить VoLTE (и заодно VoWiFi) на данном устройстве.

Читать далее

Открытый и опасный: как снизить риски open-source в приложениях

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

Всем привет!

Опен-сорс и почему в российских ПО появляется код из библиотек, расположенных на серверах из недружественных юрисдикций – самая модная тема сезона.

Поэтому Владимир Высоцкий, руководитель по развитию бизнеса продукта Solar appScreener, в этом материале решил напомнить об основных рисках открытого кода и как их можно избежать на этапе разработки вашего продукта.

Читать далее

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

BDUI: эволюция динамических интерфейсов

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

Привет, Хабр! В России набирает популярность новый подход к созданию пользовательских интерфейсов — Backend Driven UI (BDUI). В нём сервер задаёт структуру и поведение интерфейса, а приложение просто отображает его на экране.

BDUI уже используют в своих приложениях многие коллеги из индустрии. Меня зовут Елена Зеликсон, я старший инженер по тестированию в VK. О том, какие преимущества у этого решения и как его применять, подробнее расскажу в этой статье.

Читать далее

Статья 2: Подробнее про MVVM

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

Серия статей с очередным разбором MV* шаблонов, но с интересными деталями
Даже опытные разработчики смогут найти что-то новое для себя

Это вторая статья из серии,
в которой подробно разбираем MVVM
и является ли класс ViewModel от Google, сущностью ViewModel из шаблона

Статья 2: Подробнее про MVVM
- 🔨 Функции обратного вызова (Callback)
- 🛠 Паттерн Наблюдатель (Observer)
- 📜 MVVM (ViewModel)
- 🔨 Привязка данных (Data Binding)

Найти новое

Как чек-лист на внутреннем портале убил 70% вопросов о релизах — без автоматизации и бюджета

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

Знакома ли вам ситуация, когда ключевые шаги релиза живут только в головах команды? Когда понять, что именно сейчас происходит с проектом — задача для ясновидящего с магическим шаром и кофейной гущей? Команда iOS-разработки в ПСБ столкнулась с этим и нашла решение.

Привет, Хабр! Я Александр Дровняшин, iOS-разработчик в ПСБ (и ответственный за выпуск приложения на iOS). И сегодня я расскажу, как простые чек-листы в Confluence резко повысили прозрачность нашего релизного процесса и помогли оперативно и просто собирать обратную связь.

Читать далее

Flutter Дайджест – Июнь 2025

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

Привет, Flutter-разработчики! 👋

Я автор телеграм-канал FlutterPulse! Месяц выдался жарким — и не только из-за погоды ☀️ Мы запустили новую рубрику, пересобрали формат пакетов и собрали для вас крутую подборку новостей, гайдов и видео. Поехали! 👇

Читать далее

Статья 1: Введение в MV шаблоны

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

Серия статей с очередным разбором MV* шаблонов, но с интересными деталями
Даже опытные разработчики смогут найти что-то новое для себя

Это первая статья из серии, которая является подводкой к самому интересному
Вспоминаем что такое MVC и MVP

Статья 1: Введение в MV шаблоны
- 📜 M‑V-подставь_свое
- 📜 MVC (Controller)
- 📜 MVP (Presenter)
- 🛠 Паттерн Команда (Command)
- 📜 MVP (Moxy)

Вспомнить былое

Я сплю на рабочем месте и вам советую

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

Однажды в разгар рабочего дня я прикрыл глаза — и буквально за секунду провалился в сон. Просто отключился. Через минут 15 проснулся свежий, бодрый, и сразу пошел работать дальше. С тех пор я начал практиковать короткий сон. И это стало одним из трех моих секретов продуктивного дня.

Читать далее

Мобильная разработка за неделю #591 (23 — 29 июня)

Время на прочтение4 мин
Количество просмотров1.9K
В этом дайджесте эксплоиты ядра iOS и палочки на Android, рабочая группа Swift для Android и незаметные ограничения, смерть резюме, ТВ-пульты как многомиллионный бизнес в магазинах приложений, Gemini для роботов и многое другое. Заходите!

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

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