Обновить
128K+

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

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

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

zhim.fit: приложение для персонального тренера без подписок и регистрации

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

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

Читать далее

Новости

Flutter на клиенте, Fletch на сервере: бэкенд на знакомом Dart

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

Вы пишете приложение на Flutter. Модели уже описаны, бизнес-правила продуманы. Осталась небольшая деталь: сервер, который будет принимать запросы и работать с данными.

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

Dart позволяет написать обе стороны приложения. А Fletch предлагает довольно понятный способ сделать серверную: знакомые по Express маршруты, middleware, обработчики запросов и немного инфраструктуры, которую не хочется каждый раз собирать вручную.

Разберёмся, как это выглядит в коде, откуда берётся скорость и какие мелочи стоит заметить до первого деплоя.

Читать далее

API принятия решений у вас в телефоне: ответ за десятки миллисекунд, без облака и без подписки (быстрый аналог Jev)

Время на прочтение5 мин
Охват и читатели5.4K

Быстрый аналог Jev API для классификации запросов — в телефоне. В статье — что это за модель, как запустить сервер за пять минут и как встроить его в бота или автоматизацию с помощью одного curl и десяти строк на Python.

Читать далее

Запускаем множество ИИ на телефоне без интернета в новом формате CMF

Время на прочтение6 мин
Охват и читатели5.6K

Чат, перевод и решения для ваших скриптов — прямо на телефоне, без интернета и без подписок. Разбираем Cortiq Mobile: открытое приложение для Android и iOS, которое запускает нейросети локально. С замерами, скриншотами и инструкцией «попробовать за пять минут».

Читать далее

3D в игре на Flame: от одной модели до целого мира

Время на прочтение11 мин
Охват и читатели8.1K

River Sortie это шутер в духе River Raid, в который можно сыграть прямо в браузере. Самолёт летит вверх по бесконечной реке, сбивает танкеры, вертолёты и мосты, заправляется над складами. Всё, что в нём движется, это обычные компоненты Flame с хитбоксами Flame, а рисует всё это в 3D flutter3d. Расскажу, как два движка поделили работу, что для этого пришлось добавить в мост flame_flutter3d, и про короткий способ, когда в 2D-игре нужна всего одна трёхмерная модель.

Читать далее

Capacitor: от веба к мобильным приложениям. Часть 5. Микрофронтенды в Capacitor

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

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

Читать далее

Как анимировать матрицу на Swift UIKit

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

В этой статье Леша, ведущий разработчик Совкомбанк Технологий, поделится опытом реализации необычной и сложной анимации в приложении Рокетбанка. А именно матрицы чисел, которая появляется, когда пользователь входит в оформление цифровой кредитной карты.

Читать далее

ч1: Обзор. Полгода после утечки через tun0. Кто из VPN-клиентов закрыл дыру, а кто закрыл issue

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

Исключите Termux из VPN на Android-телефоне и выполните в нём одну команду:

curl --interface tun0 https://ifconfig.me

Лучше перебрать tun0-tun9

Если в ответ пришёл адрес вашего VPN-сервера, значит приложение, которое по вашим же настройкам не должно ходить в туннель, только что сходило через него. Ни root, ни своего кода для этого не нужно. А пароль на локальный прокси, который весной добавили многие клиенты, от этой утечки не спасает.

С весны прошло полгода. Мы прошли по трекерам и релизам 28 клиентов и прочитали код тех, кто утечку закрыл. Проверку владельца соединения сделали двое. И у обоих, судя по коду, была одна и та же ошибка. Про исключённое приложение Android отвечает «владелец неизвестен». И именно такие соединения они пропускали. Один клиент исправил это в тот же день, как мы написали ему. Второй пока молчит. Ниже обзор: кто закрыл дыру, кто закрыл issue, и что можно сделать уже сейчас.

Читать далее

Как добавить новый сценарий в существующее Android-приложение без технического долга

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

Привет! Меня зовут Ирина, я Android-разработчик в SimbirSoft. Хочу поделиться с вами опытом разработки новых функций и рефакторинга существующих модулей Android-приложения компании «Юрент» — одного из крупнейших в России сервисов аренды электросамокатов (кикшеринга).

Добавление нового сценария (фичи) в мобильное приложение без создания технического долга — это искусство баланса между скоростью выпуска и архитектурной чистотой. С одной стороны, менеджмент требует выпустить новую фичу «еще вчера». С другой –  разработчики знают: любой новый экран или бизнес-логика, втиснутые в устаревший код без рефакторинга, завтра превратятся в источник багов и архитектурный хаос. Конечно, совсем без какого-либо техдолга вести разработку не получится, это утопия, но все-таки можно постараться свести его к управляемому техническому долгу. В нашей практике мы выделяем для этого четкий бюджет времени в спринте, чтобы новый код не превратился в «архитектурный бетон», который никто никогда не тронет. В этой статье я покажу, каких принципов разработки мы придерживались, чтобы избегать неуправляемого технического долга, и продемонстрирую эти принципы на примере задачи по добавлению промокнопки на главный экран приложения.

Материал в первую очередь ориентирован на специалистов Mobile Team Lead/ Tech Lead, так как именно им предстоит принимать архитектурные решения и защищать их перед менеджментом.

Узнать, как не множить техдолг ✅

Безопасность Apple Mobile Devices. Продолжение следует… 12 лет спустя

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

23 июня 2014 года я закончил статью про безопасность мобильных устройств Apple словами "Продолжение следует...", после чего, как это иногда бывает с действительно интересными техническими вопросами, слегка увлекся другими вещами.

Прошло двенадцать лет.

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

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

Кащеева смерть действительно была на игле.

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

Начнем, однако, ровно с того места, на котором мы остановились.

Читать далее

Офлайн-карта в кармане: 48 районов, PMTiles и телефон, который в 90 раз медленнее ноутбука

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

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

Читать далее

Как теплотехник в 50 лет стер границу между КИПиА и IT: пишем универсальный Android‑SCADA движок на Flutter

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

Привет, Хабр! Мне 50 лет, я инженер‑теплотехник с многолетним стажем. Работаю в компании которая занимается производством блочных тепловых пунктов. Моя повседневная работа — это проектирование разделов АТМ в AutoCAD,и программирование реле ПР200 от «Овен» в связке с панелями EKF для наших шкафов управления.

В какой‑то момент я поймал жесткий профессиональный кризис. Когда ты закрываешь объекты один за другим, а алгоритмы автоматизации превращаются в конвейер, мозг начинает выгорать. Мне наскучило писать одни и те же блоки логики и рисовать типовые экраны на панелях. Захотелось амбициозной, сложной задачи, которая заставит извилины шевелиться, и даст то самое забытое чувство: «Я смог это сделать!».

Я не профессиональный программист, но я умею ставить задачи. Объединив свой опыт в КИПиА с возможностями современных нейросетей, я в одиночку разработал универсальное для наших шкафов управления мобильное приложение на Flutter/Dart, которое может подключаться к ПР200 или любому другому Modbus устройству тремя различными способами. И после подключения на экране смартфона вы получаете своего рода мини SCADA систему для настройки, контроля и управления контроллером в шкафу.

Ниже я подробно расскажу об архитектуре этого решения, и почему ИИ — это лучший «цифровой джун» для опытного инженера.

Читать далее

0.0000008 Мбит/с при оценке A+: как тихий 403 от Cloudflare сломал половину теста bufferbloat

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

Фаза загрузки в моём тесте bufferbloat не нагружала линию: speed.cloudflare.com отвечал на запрос гигабайта кодом 403 и одним байтом, а код этого не замечал. Как это исказило вердикты, как ошибка всплыла при скорости 0.0000008 Мбит/с и почему генератор нагрузки обязан измерять собственную нагрузку.

Читать далее

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

Я написал свой музыкальный плеер со своим стримингом: Android, Windows, Linux и сервер на Rust

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

У меня есть коллекция музыки, которой нет ни в одном стриминге: FLAC, японские альбомы, редкие релизы. Слушать её хотелось так же удобно, как Spotify, с телефона и компьютера, с текстами и итогами года. Готовые решения закрывали задачу по кусочкам, поэтому я написал своё: Nami — плеер для Android, Windows и Linux и собственный сервер на Rust. Внутри: синхронизация между устройствами через одну SQL‑таблицу вместо девяти, караоке‑тексты с выравниванием по словам нейросетью прямо на телефоне, фуригана и ромадзи для японских песен, bit‑perfect‑вывод на USB‑ЦАП и сервер, который занимает 69 МБ памяти.

Читать далее

Оффлайн телесуфлёр поверх Instagram и TikTok: распознавание речи на телефоне, выравнивание по словам

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

Мой телесуфлёр для Android называется Суфлёр. Он распознаёт речь на телефоне и прокручивает текст по голосу поверх Instagram, TikTok или системной камеры. Во время записи видео Android отдаёт микрофон камере, и Суфлёр получает звук параллельно с ней через службу специальных возможностей. Такое исключение описано в разделе 5.4.5 Android CDD. Место в сценарии Суфлёр находит, выравнивая восемь последних распознанных слов по всему тексту. Ещё в статье есть правила, которые понадобились трекеру для английского языка.

Читать далее

Как мы проектировали поиск по закупкам и почему «найти больше» оказалось неправильной метрикой

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

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

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

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

Читать далее

Мобильная разработка за неделю #647 (21 — 27 сентября)

Время на прочтение4 мин
Охват и читатели8.2K

В новом выпуске почему игры лагают и как я всё‑таки опубликовать игру в Google Play из России, iPhone Duo для iOS-разработчика и кросс-компиляция под Android, Flutter Web с WebAssembly Week, ИИ-агент для мобильного тестирования в hh.ru, биологическая лаборатория Anthropic, новые премиальные Googlebook на Android и многое другое. Заходите!

Читать далее

App Review забанил нашу механику. Нотаризация пропустила её — но нашла другое

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

Два месяца, восемь раундов проверки Apple: два реджекта App Review и два реджекта нотаризации для альтернативного маркетплейса. Что выяснилось: контент на нотаризации действительно не смотрят - механика, зарубленная в App Store по Guideline 1.2, прошла четыре раза. Но формальные гайдлайны применяются: нас отклонили по 2.1 (ключ ATT без промпта) и по 4.8 (ревьюер открыл нашу веб-страницу входа и потребовал Sign in with Apple). Плюс цифры по срокам из App Store Connect: первая нотаризация шла неделю, последняя - 3 часа 46 минут.

Читать далее

ИИ в тестировании: от анализа требований до автоматизации

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

Перевод статьи о QA-трансформации в крупном брокере: от ручных проверок к умному workflow. История о том, как тестирование было перестроено вокруг LLM: реальный стек, примеры пропущенных требований и разбор того, где ИИ ошибается. И да, человек всё ещё очень нужен.

Читать далее

Попробуйте Flutter Web с WebAssembly Week

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

Flutter позволяет создавать выразительные многоплатформенные приложения из единой кодовой базы. Независимо от того, разрабатываете ли вы панель управления, инструмент для своей команды или полноценное веб-приложение, Flutter Web дает вам возможность адаптировать ваше приложение для любого браузера.

С 17 по 21 августа мы проводим Неделю тестирования Flutter Web с WebAssembly ! В течение недели инженеры Dart и Flutter будут в режиме реального времени обрабатывать поступающие запросы, чтобы помочь в миграции, а наша команда по связям с разработчиками будет делиться вашими успехами в каналах сообщества.

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